Mysql utf8 格式 升級爲 utf8mb4

1.utf8mb4的最低mysql版本支持版本爲5.5.3+,若不是,請升級到較新版本。
2.修改database、table和column字符集。參考以下語句:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE =utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3.修改mysql配置文件my.cnf(windows爲my.ini)
my.cnf一般在etc/mysql/my.cnf位置。找到後請在以下三部分裏添加如下

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'1.

4.重啓 MySQL Server、檢查字符集
1.)重啓命令參考:/etc/init.d/mysql restart
2.)輸入命令:mysql,進入mysql命令行(如果提示沒權限,可以嘗試輸入mysql -uroot -p你的密碼)
3.)在mysql命令行中輸入:

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client    | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database  | utf8mb4            |
| character_set_filesystem | binary            |
| character_set_results    | utf8mb4            |
| character_set_server    | utf8mb4            |
| character_set_system    | utf8              |
| collation_connection    | utf8mb4_unicode_ci |
| collation_database      | utf8mb4_unicode_ci |
| collation_server        | utf8mb4_unicode_ci |
+--------------------------+--------------------+

特別說明下:collation_connection/collation_database/collation_server如果是utf8mb4_general_ci,沒有關係。但必須保證character_set_client/character_set_connection/character_set_database/character_set_results/character_set_server爲utf8mb4。關於這些字符集配置是幹什麼用的,有什麼區別,請參考:深入Mysql字符集設置
5.如果你用的是java服務器,升級或確保你的mysql connector版本高於5.1.13,否則仍然無法使用utf8mb4
這是mysql官方release note,大家可以查看說明,並下載最新的mysql connector for java的jar包。
這裏爲大家提供一個:mysql-connector-java-5.1.31-bin.jar

6.檢查你服務端的db配置文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jdbc.username=root
jdbc.password=password

特別說明其中的jdbc.url配置:如果你已經升級好了mysql-connector,其中的characterEncoding=utf8可以被自動被識別爲utf8mb4(當然也兼容原來的utf8),而autoReconnect配置我強烈建議配上,我之前就是忽略了這個屬性,導致因爲緩存緣故,沒有讀取到DB最新配置,導致一直無法使用utf8mb4字符集,多麼痛的領悟!!


補充:
1.
show variables like ‘init_connect’;
SET GLOBAL init_connect=’SET NAMES utf8mb4’;

2.表編碼修改

ALTER TABLE player CHARSET=utf8mb4;


3.表字段修改

ALTER TABLE player modify name VARCHAR(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

發佈了30 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章