MySQL插入emoji表情失敗總結(jié)

錯(cuò)誤描述:
使用的是Mysql數(shù)據(jù)庫(kù),在插入數(shù)據(jù)的時(shí)候報(bào)以下錯(cuò)誤:
Incorrect string value: '\xF0\x9F\x98\x81' for column 'declaration' at row 1

失敗場(chǎng)景
"活動(dòng)宣言" 字段中存在emoji表情,調(diào)用jdbc往mysql數(shù)據(jù)庫(kù)插入的時(shí)候拋出異常java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x81' for column 'declaration' at row 1

失敗原因
mysql的utf8編碼的一個(gè)字符最多3個(gè)字節(jié),但是一個(gè)emoji表情為4個(gè)字節(jié),所以u(píng)tf8不支持存儲(chǔ)emoji表情。但是utf8的超集utf8mb4一個(gè)字符最多能有4字節(jié),所以能支持emoji表情的存儲(chǔ)。

解決方案
知道了原因,就好解決了,無(wú)非就是調(diào)整字符集,支持存儲(chǔ)4個(gè)字節(jié);主要兩個(gè)方面,一是將數(shù)據(jù)庫(kù)、表、字段的字符集調(diào)整為utf8mb4字符集,二是將Mysq的環(huán)境配置變量調(diào)整為utf8mb4字符集;

一. 修改database、table、column字符集
1、修改database字符集
ALTER DATABASE 數(shù)據(jù)庫(kù)名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

2、修改table字符集
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3、修改column字符集
ALTER TABLE 表名 CHANGE 字段名 字段名 該字段原來(lái)的數(shù)據(jù)類型 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

以上三種可以根據(jù)自己的實(shí)際情況來(lái)選擇修改;

二. 查看mysql配置變量
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

image.png

注意character_set_server這個(gè)變量的值是否等于utf8mb4,如果不是那么看第三步,進(jìn)行修改。

三. 修改MySQL配置文件
這邊mysql是安裝在centos下的,配置文件名稱為my.cnf,路徑按照自己安裝的目錄來(lái)。
vim /etc/my.cnf

image.png

找到character_set_server,將其值設(shè)置為 utf8mb4,保存退出;然后重啟下mysql服務(wù)
進(jìn)入mysql的bin目錄:service mysqld restart

重新啟動(dòng)mysql后,再次輸入表情,提交保存數(shù)據(jù)成功。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 失敗場(chǎng)景 用戶昵稱中存在emoji表情,調(diào)用jdbc往mysql數(shù)據(jù)庫(kù)插入的時(shí)候拋出異常java.sql.SQLE...
    許渺閱讀 2,813評(píng)論 2 17
  • 由于需要實(shí)現(xiàn)emoji表情評(píng)論的功能,所以數(shù)據(jù)庫(kù)需要支持emoji表情的存儲(chǔ),根據(jù)查詢的資料最終實(shí)現(xiàn)了該功能,現(xiàn)將...
    丶Finley閱讀 1,286評(píng)論 0 0
  • 什么是emoji emoji在誕生之初有多種標(biāo)準(zhǔn),所以早期兼容性是個(gè)問(wèn)題。但是現(xiàn)在已經(jīng)標(biāo)準(zhǔn)化了,是unicode的...
    frankgo閱讀 1,672評(píng)論 0 0
  • 轉(zhuǎn) 問(wèn)題描述: 如果UTF8字符集且是Java服務(wù)器的話,當(dāng)存儲(chǔ)含有emoji表情時(shí),會(huì)拋出類似如下異常: jav...
    天上掉陷阱閱讀 799評(píng)論 0 3
  • 1、問(wèn)題:mysql 遇到某些中文插入異常最近有同學(xué)反饋了這樣一個(gè)問(wèn)題: 上述語(yǔ)句在腳本中 load 入庫(kù)的時(shí)候會(huì)...
    kanasu閱讀 3,168評(píng)論 1 4

友情鏈接更多精彩內(nèi)容