店铺违规预警:同步 SQL 在源端转换 date 列,修复 FreeTDS 区域日期解析失败 #316

Merged
renshen merged 1 commits from fix/sumu-store-violations-dblib-dates into main 2026-10-13 09:40:53 +08:00
Collaborator

实际改动

  • app/Console/Commands/SyncStoreViolations.php:SELECT 中对 violation_date / deadline / crawl_date 三列使用 CONVERT(varchar(10), col, 23),与 BusinessMirrorSynchronizer 既有做法一致。

背景

生产 operations_replica 经私有隧道使用 PDO_DBLIB,FreeTDS 按连接区域返回本地化 date(例:Oct 4 2026 12:00:00:AM),统一表映射解析失败,每日同步报错“无法识别的日期”。10-06 首次同步在开发机(ODBC)执行成功,掩盖了该问题。

验证

  • php -l 通过。
  • 生产实测(只读):同口径 SELECT 经 dblib 返回 2026-10-04 / 2026-10-11 等标准 ISO 日期。
  • 部署后将在生产执行一次 store-violations:sync 全量核对。

风险

  • 仅调整同步命令的 SELECT 投影格式;不涉及金额、权限、审批、迁移或数据删除。
  • 回滚为还原该 SELECT 片段后重新发布。
## 实际改动 - app/Console/Commands/SyncStoreViolations.php:SELECT 中对 violation_date / deadline / crawl_date 三列使用 CONVERT(varchar(10), col, 23),与 BusinessMirrorSynchronizer 既有做法一致。 ## 背景 生产 operations_replica 经私有隧道使用 PDO_DBLIB,FreeTDS 按连接区域返回本地化 date(例:Oct 4 2026 12:00:00:AM),统一表映射解析失败,每日同步报错“无法识别的日期”。10-06 首次同步在开发机(ODBC)执行成功,掩盖了该问题。 ## 验证 - php -l 通过。 - 生产实测(只读):同口径 SELECT 经 dblib 返回 2026-10-04 / 2026-10-11 等标准 ISO 日期。 - 部署后将在生产执行一次 store-violations:sync 全量核对。 ## 风险 - 仅调整同步命令的 SELECT 投影格式;不涉及金额、权限、审批、迁移或数据删除。 - 回滚为还原该 SELECT 片段后重新发布。
renshen added 1 commit 2026-10-13 09:40:49 +08:00
生产 operations_replica 经私有隧道使用 PDO_DBLIB,FreeTDS 会按连接区域返回本地化日期(例:Oct 4 2026 12:00:00:AM),统一表映射解析失败导致每日同步报错(无法识别的日期)。与 BusinessMirrorSynchronizer 既有做法一致,在 SELECT 中 CONVERT 成 ISO 字符串(style 23)再交给 PHP 解析。

- SyncStoreViolations:violation_date / deadline / crawl_date 源端转 ISO
- 生产实测:同口径查询经 dblib 返回 2026-10-04 等标准格式
renshen merged commit 63f9e2a418 into main 2026-10-13 09:40:53 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WuYongJie/CaiWuXiTong#316
No description provided.