首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 字符集衝突錯誤(Illegal mix of collations)原因與解決方案

     編輯:MySQL 資料庫相關知識

錯誤現象

Illegal mix of collations (gbk_chinese_ci,IMPLICIT) 
and (gbk_bin,IMPLICIT) for Operation '='
SQL State: HY000, Error Code: 1267

根本原因

資料庫預設編碼與建表時指定的編碼不一致,導致排序規則衝突。常見於安裝時設為 gbk,但建表未明確指定字符集,或混用 gbk_chinese_ci 與 gbk_bin。

解決方法

方法一:建表時明確指定 CHARSET

CREATE TABLE `teachers` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  `department_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

方法二:依賴資料庫預設編碼(需確認預設為 gbk)

CREATE TABLE `teachers` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  `department_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

建議:明確指定 DEFAULT CHARSET 可避免遷移或升級時的編碼不一致問題。若需支援多語言,推薦使用 utf8mb4 並搭配 utf8mb4_unicode_ci 排序規則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved