我对mysql数据库使用utf-8
一般不区分大小写,但是django
使用latin collation
创建了一个测试数据库
我已经设定了这个:
TEST_CHARSET="utf8_general_ci"
TEST_COLLATION="utf8_general_ci"
在设置文件中,但无济于事。
我还应该做什么?
答案 0 :(得分:19)
TEST_CHARSET
和TEST_COLLATION
重命名为CHARSET
和COLLATION
,并在Django 1.8中移至TEST
字典:
DATABASES = {
...
'TEST': {
'CHARSET': 'utf8',
'COLLATION': 'utf8_general_ci',
}
}
答案 1 :(得分:8)
添加:
DATABASES = {
'default': {
...
'TEST_CHARSET': "utf8",
'TEST_COLLATION': "utf8_general_ci",
}
}
答案 2 :(得分:1)
我有同样的问题,花了好几个小时搞清楚,直到注意到
TEST_CHARSET
TEST_COLLATION
应该是DATABASES的一部分,而不是settings.py。 将它们混合起来很容易......
答案 3 :(得分:1)
请参见此处: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',
},
},
}
答案 4 :(得分:0)
正如其他人指出的那样,您需要使用类似的东西来创建数据库
DATABASES = {
...
'TEST': {
'CHARSET': 'utf8mb4',
'COLLATION': 'utf8mb4_unicode_ci',
}
}
但是您还需要确保您也有类似的东西,以确保您的测试通过适当的字符集与数据库通信。
DATABASES = {
...
'OPTIONS': {
'charset': 'utf8mb4'
}
}
答案 5 :(得分:-2)