在datagrip中的具體報錯
[2019-01-15 10:26:35] [HY000][1366] Incorrect string value: '\xF0\x9F\x91\x8C' for column 'xxxx' at row 1
[2019-01-15 10:26:35] [HY000][1300] Invalid utf8 character string: 'F09F91'
[2019-01-15 10:26:35] [HY000][1366] Incorrect string value: '\xF0\x9F\x91\x8C' for column 'address' at row 1
原因是我在輸入的時候加了一個
👌
這個導致無法存儲
搜到使用utf8mb4字符集可以解決,但我使用這個字符集的時候沒有解決,實際上,之前早就是這個字符集了。
繼續查到文章 emoji字符無法寫入Mysql數據庫問題
經過在網上查詢,\xF0\x9F開頭的確實是UTF8字符集範圍;UTF8長度是2-4個字節,我們在Mysql常用的是2-3個字節長,但這個拋出來的錯誤顯示是4個字節,所以就錯在這了(用java寫代碼也會報同樣錯誤,原因是jdbc在做數據插入前會嚴格檢查字段的類型、長度,一但不符就會拋出異常;
然後在這篇文章中 MySQL插入emoji表情錯誤的2種解決方案,Incorrect string value: ‘\xF0\x9F\x98\x84’
想起原來工程裏有的emoji依賴,應該是處理這類問題的