Django 创建支持中文数据库
2018-04-01 本文已影响138人
yarving
问题的引出
当使用django默认生成项目时,使用
python manage.py migrate
生成数据库时,会自动创建一个数据库。以MySQL为例,当往数据库中写入中文数值时,会报错误。诸如:
Incorrect string value: '\xC5\x82oj\xC4\x87' for column 'last_name' at row 104
恼火的是,当报出这个错误信息时,根本没有合适的错误信息显示出来,我忘了我第一回看到这个错误是什么感觉了,经过搜索引擎的结果提示,再结合经验才发现这个是因为默认创建的MySQL数据库不能有效支持中文。
当试图去寻找解决方案时,不管是百度还是谷歌,大部分的搜索结果都是手动创建一个支持中文的数据库
CREATE DATABASE 数据库名字 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
,如下图所示:

亦或是修改migrations文件,这样能实现自动创建。
其实,在django的官方文档中,人家有关于对MySQL数据库的配置,里面提到了CHARSET
和COLLATE
的配置设置。
先公布最终答案,在myproject/settings.py
中的DATABASES
字段添加如下图所示配置,如果为测试用途,需要为测试数据库的配置也加上CHARSET
和COLLATION
这两个配置:


参考资料: