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%';
    • Alt text
    • 修改character_set_server值为utf8mb4
    • 重启MySql使更改生效

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '=' 异常的处理

原因同上

处理方案同上