MySQL报错: ERROR 1366 和 1406 解决办法

20 篇文章 43 订阅

1.错误背景

设计MySQL数据时设置数据编码 charset=utf8,插入数据全为英文时没有任何报错,查询、创建函数、视图都正常,当插入含中文字符数据时就会报错,一次报2个错:
报错 1:

ERROR 1366 (HY000): Incorrect string value: ‘\xA4\x95’ for column ‘name’ at row 1

报错 2:

ERROR 1406 (22001): Data too long for column ‘name’ at row 1

插入语法、格式都反复检测过,没有问题,字符串设置长度也足够长。

2.排查错误

通过:status 查看数据库状态,如下图:
在这里插入图片描述
发现他们4者的字符编码格式不一样:

Server characterset: utf8mb4
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk

3.解决办法

3.1 方法一:

将Client和Connection的字符编码格式改成了:utf8

mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;

再次查看数据库状态,修改成功,再次插入含中文字符的数据时,就没有报错啦:
在这里插入图片描述

3.2 方法二:

set names utf8;

设置前:
在这里插入图片描述
设置后:
在这里插入图片描述
参考:
https://blog.csdn.net/wangqingbang/article/details/90900290?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值