平時采用的都是utf8編碼,每個字符三個字節,現在要把4個字節的emoji表情插入數據庫。
版本需要 >= MySQL 5.5.3版本、從庫也必須是5.5的了、低版本不支持這個字符集、復制報錯
分三個步驟:
第一步,修改mysql數據庫的配置文件,使用新的字符集。
linux:my.cnf;windows:my.ini
找到對應位置,添加如下配置:
[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'
第二步:修改數據庫、表、字段的字符集。
ALTER DATABASE 數據庫名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE 表名 CHANGE 字段名 字段名 VARCHAR(實際長度) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注意那個字段名就是寫兩遍。
第三步:服務器連接數據庫 Connector/J的連接參數中,不要加characterEncoding參數。 不加這個參數時,默認值就時autodetect。
jdbc.url=jdbc:mysql://{maven.jdbc.port}/${maven.jdbc.db}?useUnicode=true&autoReconnect=true&rewriteBatchedStatements=TRUE
第四步:重啟mysql
附上一些命令
查看數據庫使用的字符集
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
查看數據庫版本
SELECT VERSION();
查看表的字段使用的字符類型
SHOW FULL FIELDS FROM 表名