Django 2.0 - 使用转储数据中的固定装置进行测试会出现 utf8mb4 编码错误
Django 2.0 - test using fixtures from dumpdata gives utf8mb4 encoding errors
我的 mySQL 数据库使用 utf8mb4 编码。
我所有的 Django 应用程序都可以正常使用它,即使是西里尔字符也是如此。
但是当我 运行 ./manage.py test <module>
并尝试加载从同一数据库转储的夹具时,我收到有关编码的错误。其中一个错误是:
Could not load advert.Region(pk=1): (1366, "Incorrect string value: '\xD0\x9F\xD0\xBB\xD0\xBE...' for column 'region_name' at row 1")
然后我在Django设置中设置DEFAULT_CHARSET,报错改为
LookupError: Problem installing fixture '<path>/test_db_one.xml': unknown encoding: utf8mb4
如您所见,我已将灯具的格式指定为 XML,因为它可以更好地处理编码。
我的设置模块具有以下属性:
DEFAULT_CHARSET = 'utf8mb4'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'autoplusplus_dev',
'USER': 'autoplusplus_django',
'PASSWORD': '1029',
'HOST': 'localhost',
'PORT': '3306',
'STORAGE_ENGINE': 'INNODB',
'OPTIONS': {'charset': 'utf8mb4'},
'TEST_CHARSET': 'utf8mb4',
}
}
我安装了mysqlclient 1.3.12
您期待Пло
?如果是这样,那就是合理的 UTF-8 编码。
"unknown encoding: utf8mb4" -- 你有一个古董版的 Django and/or MySQL?你是什么版本 运行?
table 的定义是什么样的?也许列是 latin1
而不是 utf8
或 utf8mb4
.
同时,使用MySQL的CHARACTER SET utf8
;这 可能 让你继续前进。
事实证明,将 Django 自身生成的文件的编码更改为 UTF-8 可以解决问题。
我的 mySQL 数据库使用 utf8mb4 编码。 我所有的 Django 应用程序都可以正常使用它,即使是西里尔字符也是如此。
但是当我 运行 ./manage.py test <module>
并尝试加载从同一数据库转储的夹具时,我收到有关编码的错误。其中一个错误是:
Could not load advert.Region(pk=1): (1366, "Incorrect string value: '\xD0\x9F\xD0\xBB\xD0\xBE...' for column 'region_name' at row 1")
然后我在Django设置中设置DEFAULT_CHARSET,报错改为
LookupError: Problem installing fixture '<path>/test_db_one.xml': unknown encoding: utf8mb4
如您所见,我已将灯具的格式指定为 XML,因为它可以更好地处理编码。
我的设置模块具有以下属性:
DEFAULT_CHARSET = 'utf8mb4'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'autoplusplus_dev',
'USER': 'autoplusplus_django',
'PASSWORD': '1029',
'HOST': 'localhost',
'PORT': '3306',
'STORAGE_ENGINE': 'INNODB',
'OPTIONS': {'charset': 'utf8mb4'},
'TEST_CHARSET': 'utf8mb4',
}
}
我安装了mysqlclient 1.3.12
您期待Пло
?如果是这样,那就是合理的 UTF-8 编码。
"unknown encoding: utf8mb4" -- 你有一个古董版的 Django and/or MySQL?你是什么版本 运行?
table 的定义是什么样的?也许列是 latin1
而不是 utf8
或 utf8mb4
.
同时,使用MySQL的CHARACTER SET utf8
;这 可能 让你继续前进。
事实证明,将 Django 自身生成的文件的编码更改为 UTF-8 可以解决问题。