【mysql】Incorrect string value 中文乱码

接口平台用户反馈一个问题。及执行测试计划后测试计划列表中并没有显示该执行的测试计划。发现又又又出现了mysql数据库字段长度限制的问题

 File "/app/httpRequest/controller/controller.py", line 121, in _execute_one_case
    series_case['case_type'])
pymysql.err.DataError: (1406, "Data too long for column 'req_uri' at row 1")

发现req_uri 字段长度为 varchar(5000) ,一怒之下直接修改成longtext 类型,搞定没有报错

但是还没过几分钟,又上报了另外的异常

Warning(1366, "Incorrect string value: '\xE6\x8E\xA5\xE5\x8F\xA3...' for column 'req_uri' at row 1")

what?

只能默默查看请求的参数数据,原来请求中有中文字符! uri中竟然有中文字符?这不是重点,重点是为什么变更成longtext 类型就会出现异常?

text 数据类型呢?没有!

讲道理这个异常错误是以为字符编码的问题。查看longtext 当前字符集编码是 latin1 ,修改成utf8 可以正常保存在数据库中!
在这里插入图片描述

text能够成功是什么原因?原来修改数据类型为text 时字符集为空没有任何设置,若为text类型,将字符集编码修改成 latin1 ,一样出现报错

OK!将字符集修改成utf8 解决问题

原文地址:https://www.cnblogs.com/guanhuohuo/p/12533579.html