Mysql-Incorrect string value


【問題描述】

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x8E\x89' for column 'title' at row 1

   

【問題原因】

數據庫中有的表字段,有4個字節而mysqlutf8字符集最大只支持3個字節,因而出錯。

   

【解決方法】

mysql中有一個utf8字符集的超集utf8mb4,該字符集允許存儲的字符最多為4個字節,那么它就可以滿足對Emoji表情的存儲。所以我們只需要將對應的字符集改為utf8mb4即可。

   

原有字符集可以通過以下方式查看:

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

   

修改my.cnf配置

character_set_server=utf8mb4

collation-server=utf8mb4_unicode_ci

   

簡單一點,這個時候可以直接將整庫刪除后重建。

如果庫中已經有業務數據,可以通過以下方式修改。

   

-- 修改整庫的字符集

ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci

   

-- 修改表的字符集

ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

   

-- 修改單個字段的字符集

ALTER TABLE <table_name> CHANGE src_column_name <target_column_name> VARCHAR(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 


免責聲明!

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



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