Django测试数据库未使用utf8创建。

17

我正在使用utf-8作为mysql数据库的普通不区分大小写的编码方式,但是django创建的测试数据库采用了latin排序规则

我已经设置过这个:

TEST_CHARSET="utf8_general_ci"

TEST_COLLATION="utf8_general_ci"

我已经在设置文件中尝试过了,但没有成功。

我还应该做什么?


你验证了设置后,执行了 syncdb 操作吗? - Jordan
6个回答

29

TEST_CHARSETTEST_COLLATION在Django 1.8版本中被重命名为CHARSETCOLLATION并移动到TEST字典中。

DATABASES = {
    ...
    'TEST': {
        'CHARSET': 'utf8',
        'COLLATION': 'utf8_general_ci',
    }
}

1
顺便提一下,这里有文档记录:https://docs.djangoproject.com/en/dev/ref/settings/#test - Gordon Wrigley

12

在设置中添加:

DATABASES = {
    'default': {
        ...
        'TEST_CHARSET': "utf8",
        'TEST_COLLATION': "utf8_general_ci",
    }
}

9
请参见此处:https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-DATABASE-TEST。该页面是关于Django框架中有关测试数据库设置的说明。
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',
        },
    },
}

1

0
如其他人所指出的,您需要像这样的东西来创建数据库

DATABASES = {
    ...
    'TEST': {
        'CHARSET': 'utf8mb4',
        'COLLATION': 'utf8mb4_unicode_ci',
    }
}

但是你也需要确保有类似这样的东西,以确保你的测试与适当的字符集与数据库进行通信。

DATABASES = {
    ...
    'OPTIONS': {
        'charset': 'utf8mb4'
     }
}

-2

这可能会受到链接失效的影响。您应该扩展答案以添加相关信息。 - Sardathrion - against SE abuse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接