django测试数据库不是用utf8创建的

时间:2012-10-15 11:27:04

标签: python mysql django testing utf-8

我对mysql数据库使用utf-8一般不区分大小写,但是django使用latin collation创建了一个测试数据库

我已经设定了这个:

TEST_CHARSET="utf8_general_ci"

TEST_COLLATION="utf8_general_ci"

在设置文件中,但无济于事。

我还应该做什么?

6 个答案:

答案 0 :(得分:19)

TEST_CHARSETTEST_COLLATION重命名为CHARSETCOLLATION,并在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。 将它们混合起来很容易......

https://docs.djangoproject.com/en/dev/ref/settings/#testing

答案 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)