文章内容

2018/7/31 11:26:44,作 者: 黄兵

(1366, "Incorrect string value: '\\xE5\\xBB\\xBA\\xE7\\xAD\\x91...' for column 'classification_name' at row 1")

最近在向MySQL插入数据的时候,报如下错误:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1366, "Incorrect string value: '\\xE5\\xBB\\xBA\\xE7\\xAD\\x91...' for column 'classification_name' at row 1") [SQL: 'INSERT INTO material_classification (classification_name, classification_icon, classification_since) VALUES (%s, %s, %s)'] [parameters: ('建筑材料', 'fdf8f907-1edf-462d-a8cc-c18152cbc727.png', datetime.datetime(2018, 7, 31, 3, 5, 28, 553571))] (Background on this error at: http://sqlalche.me/e/e3q8)


原因:

这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。


解决方案:

1、查看一下数据表的编码:

show create table material_classification;

结果如图:


2、修改编码格式

alter table material_classification convert to character set utf8mb4 collate utf8mb4_bin;

其中material_classification是表名。

再次查看一下编码格式:


编码格式已经改变。

再次测试,问题解决。


如果是修改某个字段的编码方式,使用如下命令:

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;



参考资料:

1、Mysql 插入中文错误:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1

2、解决mysql插入数据时出现Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的异常

3、修改MySQL的字符集为utf8mb4


黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - (1366, "Incorrect string value: '\\xE5\\xBB\\xBA\\xE7\\xAD\\x91...' for column 'classification_name' at row 1")

分享到:

发表评论

评论列表