报错背景呈现
在MySQL中创建一张表,表中有一个string、text等类型的处理文本的字段,当我们试图往这个字段中插入一个中文字符串时,可能会报以下错误:MySQL插入错误,incorrect string value '\xE6\x9C\x88...'for column “title” at row 1。
报错原因
第一次遇到这个问题的同学可能还比较疑惑,明明定义了字符串类型的数据,为啥插入中文字符串会报错呢?
其实通过报错信息我们能看出,报错说 '\xE6\x9C\x88...'这个类型的字符串是不正确的,其实熟悉编码的同学应该马上能明白,该字符串是中文的'UTF-8'编码的结果,而MySQL在该版本默认支持的可能不是UTF-8编码,那么你放中文进去当然会报错。
报错解决
- 首先查看当前表的字符编码集。
执行SHOW CREATE TABLE your_table_name;
我们发现当前表的编码集默认是拉丁字符latin1,于是我们发现了问题所在。 - 将表的字符编码改为UTF-8
执行ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
我们再按照步骤1查询编码可以发现更改成功!
这个时候再去插入就不会报错啦!
您的关注和点赞是对我最大的支持,谢谢大家,会持续更新技术博客!