mysql中插入emoji表情失敗的原因與解決
阿新 • • 發佈:2020-01-09
失敗場景
使用者暱稱中存在emoji表情,呼叫jdbc往mysql資料庫插入的時候丟擲異常 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x9B'
失敗原因
mysql的utf8編碼的一個字元最多3個位元組,但是一個emoji表情為4個位元組,所以utf8不支援儲存emoji表情。但是utf8的超集utf8mb4一個字元最多能有4位元組,所以能支援emoji表情的儲存。
下面話不多說了,來一起看看詳細的介紹吧
解決方案
一. 修改database、table、column字符集
修改database字符集
ALTER DATABASE 資料庫名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
修改table字符集
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
修改column字符集
ALTER TABLE 表名 CHANGE 欄位名 欄位名 該欄位原來的資料型別 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
以上三種可以根據自己的實際情況來選擇修改;
二. 檢視mysql配置變數
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
注意 character_set_server 這個變數的值是否等於 utf8mb4 ,如果不是那麼看第三步。
三. 修改mysql配置檔案
這邊 mysql 是安裝在 centos 下的,配置檔名稱為 my.cnf,路徑按照自己安裝的目錄來。
vim /etc/my.cnf /etc/mysql/my.cnf
my.cnf
找到 character_set_server ,將其值設定為 utf8mb4 ,儲存退出;試著重新 insert 看是否報錯;如果報錯可能需要重啟下 mysql 服務
service mysqld restart
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支援。