文章内容
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的异常
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - (1366, "Incorrect string value: '\\xE5\\xBB\\xBA\\xE7\\xAD\\x91...' for column 'classification_name' at row 1")
评论列表