首頁
編程語言
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

根本原因

資料庫預設字符集/校對與建表時指定的字符集/校對不一致,導致比較運算時校對衝突。

修復方案

方法一:建表時顯式指定與資料庫一致的字符集

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;

方法二:不指定字符集,完全繼承資料庫預設值

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`)
);

最佳實踐建議

  1. 統一資料庫、表、欄位三級字符集/校對(推薦 utf8mb4 + utf8mb4_unicode_ci)。
  2. 建庫時顯式指定 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci。
  3. 避免在建表/修改欄位時混用不同字符集。
  4. 若已存在不一致,可用 ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci 批量轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved