Django报错“_mysql_exceptions.Warning: Incorrect string value: ‘\xE6\xB5…’ for column ‘name’ at row 1”

在使用Django连到我的VPS上的MySQL数据库,在插入数据时,报了这样一个错误:“_mysql_exceptions.Warning: Incorrect string value: '\xE6\xB5\x81\xE8\xA1\x8C...' for column 'name' at row 1”。

我使用了中文的数据,看起来就是一个字符集不兼容的错误;Django默认使用UTF-8,而mysqld那边配置是默认使用了latin1 - default collation 。

解决办法如下:

1. 修改 /etc/my.cnf 配置文件,然后重启mysqld。
在[client]下配置:default-character-set=utf8
在[mysqld]下配置:
default-character-set=utf8
init_connect='SET NAMES utf8'

注意:新版MySQL(如:5.5)或MariaDB等,mysqld启动时可能会遇到“[ERROR] /usr/libexec/mysqld: unknown variable 'default_character_set=utf8'”的错误;就应该在[mysqld]中用 character_set_server=utf8 替换掉 default_character_set=utf8 。

2.如果还没有解决,那么就得删掉原来建的DB,重新建并制定字符集为utf8,如:CREATE DATABASE jay_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


附我遇到的报这个错的堆栈信息:

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*