Django "Illegal mix of collations" 用于 MySQL utf8mb4 table

Django "Illegal mix of collations" for MySQL utf8mb4 table

我已经查看了与此主题相关的其他问题,例如 django python collation error

但是,解决方案说要使用 utf8 字符集对 table 进行编码。对于我们在 utf8mb4 编码数据库上的现代 Django 应用程序 运行,这不是一个可行的解决方案。

在我的例子中,我需要在 Django 生成的查询中或在数据库本身中强制执行字符集或排序规则,当传入 utf-8 字符时(从对 model.objects.get_or_create() 的调用,我相信在 kwargs 字段之一中传递了一个表情符号字符。)

我收到这个错误:

django.db.utils.OperationalError: (1267, "Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='")

欢迎任何建议。谢谢!

在您的 shared_settings.py 文件中尝试以下操作:

DATABASES = {
    "default": {
        "NAME": "DBNAME",
        "ENGINE": "django.db.backends.mysql",
        ...
        "OPTIONS": {"charset": "utf8mb4"}
        # ^ Set the options
    }
}