系統報錯解決:Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)
阿新 • • 發佈:2020-12-29
### Cause: java.sql.SQLException: Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation ‘like’
原因分析:
1.資料庫表資料的編碼不一致;
解決:
用sql將資料修改為統一編碼:
alter table lf_ctrl_net convert to character set utf8 collate utf8_general_ci;
2.資料庫記憶體在多種編碼:
檢視方式:
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------+
| 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
3.資料庫和mysql的編碼不一致,需要去 my.cnf 修改編碼格式,這種出現的可能性較小。