MySQL插入異常:SQL state [HY000]; error code [1366]-----(utf8mb4)


發現爬蟲軟件,爬取數據不及時,查詢服務器日志發現異常:

SQL state [HY000]; error code [1366]
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xAD</...'

顯示為某字段插入異常;而顯示該字段的值為上面顯示的字符

經過查閱發現mysql編碼問題

'\xF0\x9F\x98\xAD</...'

可以發現該字符為一個4字節的十六進制的字符

我們先看看mysql的字符集所支持的字節范圍:

SHOW CHARACTER SET;

 

發現:

utf8最大支持3個字節的字符

翻看了mysql官方version release notes,可以發現:

在version 5.5.3之后,增加了一種和utf-8類似的字符集utf8mb4,並且它的編碼支持4個字節每個字符,

所以解決辦法是:

將對應列的字符集改成utf8mb4

再進行插入測試,發現插入成功;


 

結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM