向Django数据库插入数据时提示:1366, "Incorrect string value: '\\xE5\\x8F\\x91\\xE5\\xB8\\x83...' for column '...

今天在使用Django的超级管理员向数据库表中添加数据时,出现了以下错误提示:(1366, "Incorrect string value: '\xE5\xB9\xBF\xE4\xB8\x9C...' for column 'address' at row 1")。其中addrss是该表中的一个列名。
向Django数据库插入数据时提示:1366,
向Django插入数据出错1.png

出现该错误是因为mysql数据库中默认的字符编码都为latin1,而我们插入的值是中文,才会出现这种错误。
解决方法是将对应的数据库表中的address列的字符集改为utf-8。运用sqlyog修改的具体路径如下:数据库--->对应的表--->栏位--->右键--->管理列--->取消"隐藏语言选项"--->修改对应列的字符集。

当我把所有该表中的字符集都改为utf-8之后,重新保存数据,会出现另外一个列的报错,具体如下:1366, "Incorrect string value: '\xE5\x8F\x91\xE5\xB8\x83...' for column 'object_repr' at row 1"
向Django数据库插入数据时提示:1366,
向Django插入数据出错.png

查询了我们要插入数据的表,并没有'object_repr'列。这是因为我们对数据库进行操作时,会被写进Django的日志里。查看Django的日志管理表django_admin_log,报错的列'object_repr'就在该表之中。修改此处字符集为utf8,排序规则为utf8_unicode_ci,保存即可。

你可能感兴趣的:(向Django数据库插入数据时提示:1366, "Incorrect string value: '\\xE5\\x8F\\x91\\xE5\\xB8\\x83...' for column '...)