MySQL插入报错,incorrect string value ‘\xE6\x9C\x88\...‘for column “xxx” at row 1

报错背景呈现

在MySQL中创建一张表,表中有一个string、text等类型的处理文本的字段,当我们试图往这个字段中插入一个中文字符串时,可能会报以下错误:MySQL插入错误,incorrect string value '\xE6\x9C\x88...'for column “title” at row 1

报错原因

第一次遇到这个问题的同学可能还比较疑惑,明明定义了字符串类型的数据,为啥插入中文字符串会报错呢?

其实通过报错信息我们能看出,报错说 '\xE6\x9C\x88...'这个类型的字符串是不正确的,其实熟悉编码的同学应该马上能明白,该字符串是中文的'UTF-8'编码的结果,而MySQL在该版本默认支持的可能不是UTF-8编码,那么你放中文进去当然会报错。

报错解决

  1. 首先查看当前表的字符编码集。
    执行 SHOW CREATE TABLE your_table_name; 

    我们发现当前表的编码集默认是拉丁字符latin1,于是我们发现了问题所在。
  2. 将表的字符编码改为UTF-8
    执行 ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

我们再按照步骤1查询编码可以发现更改成功!
这个时候再去插入就不会报错啦!

您的关注和点赞是对我最大的支持,谢谢大家,会持续更新技术博客!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值