Преглед изворни кода

fix(omg-pay): OMG 3 表 collation 对齐 pos_order,修复定时补单 JOIN 报错

pos_order=utf8mb4_unicode_ci,OMG 3 新表(pos_order_omg_payment/
pos_order_omg_refund/pos_store_omg)=utf8mb4_general_ci,JOIN dd_id 报
Illegal mix of collations(selectLeakOrderDdIds)。CONVERT 3 表到
unicode_ci 对齐 pos_order。待开发者执行。

Co-Authored-By: Claude <noreply@anthropic.com>
qmj пре 2 недеља
родитељ
комит
f937e083ba
1 измењених фајлова са 14 додато и 0 уклоњено
  1. 14 0
      updatesql/sql.md

+ 14 - 0
updatesql/sql.md

@@ -628,3 +628,17 @@ WHERE invoice_choice = 'MEMBER' AND carrier_type = '2';
 ALTER TABLE pos_order_omg_payment ADD INDEX idx_pay_status_create (pay_status, create_time);
 ```
 
+## 2026-08-12 OMG 3 表 collation 对齐 pos_order(修复定时补单 JOIN Illegal mix of collations)
+
+```sql
+-- 背景:定时补单 selectLeakOrderDdIds 报 "Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT)
+--      and (utf8mb4_general_ci,IMPLICIT) for operation '='"。根因:pos_order 是 utf8mb4_unicode_ci,
+--      OMG 3 新表(pos_order_omg_payment/pos_order_omg_refund/pos_store_omg)建表时 CHARSET=utf8mb4
+--      未指定 COLLATE,落成 utf8mb4_general_ci,JOIN pos_order.dd_id 时 collation 冲突。
+--      把 3 表 CONVERT 到 utf8mb4_unicode_ci 对齐 pos_order(老表是核心,不动)。
+--      安全:charset 不变(均 utf8mb4),仅 collation general_ci->unicode_ci;dd_id/merchant_trade_no 等
+--      纯字母数字列不受排序语义影响。执行后 selectLeakOrderDdIds 等所有 JOIN pos_order 的 SQL 不再冲突。
+ALTER TABLE pos_order_omg_payment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
+ALTER TABLE pos_order_omg_refund CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
+ALTER TABLE pos_store_omg CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
+```