MYSQL錯誤:Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 一個解決辦法
異常的意思是:字段字符集編碼不同,不合法的連接。
用show full columns from tenant;命令查看tenant表各個字段的字符編碼。
再用show full columns from employees;命令查看employees表各個字段的字符編碼。
發現 tenant中的unitno字段和 employee中的unitno字段的字符編碼類型不一致。一個是GBK的,一個是GB2312的。
然後用
ALTER TABLE `tenant` CHANGE `unitno` `unitno` VARCHAR( 32) CHARACTER SET gb2312 COLLATE gb2312_bin NOT NULL
命令修改tenant表中的nuitno字段的字符編碼爲gb2312類型。保證與整個數據庫的字符編碼gb2312一致。
或者使用alter table tenant convert to character set gb2312;命令,把整個表的字符編碼設爲gb2312。
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
依次執行:
set character_set_client =gb2312;
set character_set_connection =gb2312;
set character_set_database =gb2312;
set character_set_results =gb2312;
set character_set_server =gb2312;
set character_set_system =gb2312; --此處utf-8也可以
然後執行:
SET collation_server = gb2312_chinese_ci
SET collation_database = gb2312_chinese_ci
SET collation_connection =gb2312_chinese_ci