项目背景:
django在进行单元测试时报错
问题描述:
报错出在进行单元测试时,创建虚拟数据库的时候,输入python manage.py test命令后报错。
MySQLdb._exceptions.OperationalError: (1366, “Incorrect string value: ‘\xE4\xBF\xA1\xE6\x81\xAF…’ for column ‘name’ at row 1”)
原因分析:
由于django在每次运行单元测试时,会临时新建一个数据库,测试完成后再删除。
原因出在 默认的 mysql 的排序规则在未指定时默认不是 utf8_general_ci
默认是一个 latin1 开头的规则, 此规则会导致中文一些编码问题。
解决方案:
修改Django的settings.py,将数据库配置添加“TEST”的CHARSET 和 COLLATION 编码,如下:
DATABASES = {
'default'