latin1 字元集的表,SELECT to_id FROM test WHERE to_id='cn象_王' 同時返回 cn陶_陶 與 cn象_王。HEX 編碼確認不同,MySQL 卻視為相同。
系統變數 collation_connection/database/server 均為 latin1_swedish_ci。手動改為 latin1_bin 不生效,因建表時指定 CHARACTER SET 但未指定 COLLATE,MySQL 採用該字元集預設校對規則(latin1_swedish_ci)。
CHARACTER SET X 和 COLLATE Y → 採用 X 和 YCHARACTER SET X → 採用 X 及其預設校對規則ALTER TABLE db_allot CONVERT TO CHARACTER SET latin1 COLLATE latin1_bin; 即可修正,無需重建表。建議統一採用字元集對應的 _bin 校對規則,避免比較錯誤。