《Django By Example》升级之旅程序员

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数据库的配置,里面提到了CHARSETCOLLATE的配置设置。

先公布最终答案,在myproject/settings.py中的DATABASES字段添加如下图所示配置,如果为测试用途,需要为测试数据库的配置也加上CHARSETCOLLATION这两个配置:

优雅的解决方案 Django 1.8 官方文档说明

参考资料:

上一篇 下一篇

猜你喜欢

热点阅读