MySQL 异常处理
Incorrect string value: '\xF0\x9F\x87\xA9\xF0\x9F...' for column
异常的处理
原因
写入数据库的字符中含有emoji表情导致,这些表情是按照四个字节一个单位进行编码的,而我们通常使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的,正是这个原因导致将数据存入mysql数据库的时候出现错误。 编码涉及:MySQL数据库编码、表编码、字段编码、服务器编码如果有任意为UTF-8,都会出现以上错误。
解决方案
- 修改mysql数据库的编码为uft8mb4
- 修改数据表的编码为utf8mb4
- 修改字段的编码为utf8mb4
ALTER TABLE `table` CHANGE COLUMN `field` `field` TEXT CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci' NULL DEFAULT NULL COMMENT 'field1' ;
- 修改服务器编码为utf8mb4
- 查看当前服务器编码
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
- 修改
character_set_server
值为utf8mb4
- 重启MySql使更改生效
- 查看当前服务器编码