执行mysql插入语句,报错
1 row(s) affected, 1warning(s): 1366 Incorrect string valu: 'xF0x9Fx98x93' fpr column 'name' at row 1
原因
在查找资料中发现,原本utf-8的3字节是可以覆盖所有语言的,但后来emoji符号的出现导致字符集扩展了,导致utf-8出现一些4字节的符号,mysql的utf-8一个字符占3个字节,但emoji表情需要占4个字节,因此造成文本无法保存。
解决
1.把数据库编码改为utf8mb4,但因为utf8mb4是占4字节,为了节省空间一般不会直接改库编码。
2.单独把某个表的字段改为utf8mb4
ALTER TABLE `表名` CHANGE COLUMN `列名` `列名` VARCHAR(45) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci' NULL DEFAULT NULL;
修改后再次执行插入语句,成功插入,问题解决。