1. 程式人生 > 其它 >系統報錯解決:Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)

系統報錯解決:Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)

技術標籤:資料庫mysql

### 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 修改編碼格式,這種出現的可能性較小。