1. 程式人生 > 資料庫 >mysql中插入emoji表情失敗的原因與解決

mysql中插入emoji表情失敗的原因與解決

失敗場景

使用者暱稱中存在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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支援。