|
|
@@ -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;
|
|
|
+```
|