我utf-8
对 mysql 数据库使用一般不区分大小写,但django
创建了一个测试数据库latin collation
我设置了这个:
TEST_CHARSET="utf8_general_ci"
TEST_COLLATION="utf8_general_ci"
在设置文件中,但无济于事。
我还应该做什么?
TEST_CHARSET
和在 Django 1.8 中TEST_COLLATION
被重命名为CHARSET
和COLLATION
移动到TEST
字典:
DATABASES = {
...
'TEST': {
'CHARSET': 'utf8',
'COLLATION': 'utf8_general_ci',
}
}
在设置中添加:
DATABASES = {
'default': {
...
'TEST_CHARSET': "utf8",
'TEST_COLLATION': "utf8_general_ci",
}
}
请在此处查看:https ://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-DATABASE-TEST
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': <db_name>,
'USER': <user>,
'PASSWORD': <password>,
'HOST': <host>,
'PORT': <port>,
'TEST': {
'NAME': <test_db_name>,
'CHARSET': 'utf8',
'COLLATION': 'utf8_general_ci',
},
},
}
我遇到了同样的问题,花了几个小时才发现它,直到注意到
TEST_CHARSET
TEST_COLLATION
应该是数据库的一部分,而不是 settings.py。很容易把它们混在一起...
正如其他人指出的那样,您需要这样的东西来创建数据库
DATABASES = {
...
'TEST': {
'CHARSET': 'utf8mb4',
'COLLATION': 'utf8mb4_unicode_ci',
}
}
但是您还需要确保您也有类似的东西,以确保您的测试使用适当的字符集与数据库通信。
DATABASES = {
...
'OPTIONS': {
'charset': 'utf8mb4'
}
}