MySQL插入「 」字時報錯,請問是什麼原因?

如題,MySQL資料庫字符集排序規則已設置為UTF8,但是某些生僻字錄入資料庫時依然報「類似Incorrect string value: "xA9xC1xF7xB6「這樣的錯誤

我的MySQL版本是5.6.17。

show variables like "character%"

show variables like "collation%"

--------------------------------------------------我是化麗的分割線--------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------

現在確定知乎的資料庫也存在這個問題,我問題中的這個字就沒有正常顯示出來,現在我把這個字的圖片貼上來:

詳情鏈接: 的解釋| 的意思

求MySQL大神解答~


字太過生僻,以至於使用了 4 個 byte 來編碼(你也看到了)。因為 UTF-8 本質上是變長的,不同字元分別使用 1 個、2 個、3 個 或 4 個 byte 來編碼。

而 MySQL 的 utf8 是不支持 4 個 byte 的字元的,mysql.com 的原文如下:

The utf8 character set is the same in MySQL 5.6 as before 5.6 and has exactly the same characteristics:

  • No support for supplementary characters (BMP characters only).

  • A maximum of three bytes per multibyte character.

解決方案:使用 utf8mb4 而不是 utf8,參見 http://dev.mysql.com/doc/refman/5.6/en/charset-unicode-utf8mb4.html。


推薦閱讀:

CAP理論和NoSQL的疑問?
主流資料庫哪個最好?哪個現在最火?
2017年資料庫(大數據)領域有哪些進展?
軟體行業有哪些方向值得花一生的時間去鑽研?
如何評價OceanBase近期強大的宣傳攻勢?

TAG:資料庫 | MySQL | 編碼 | 字符集 |