我在使用Mysql的Django上有项目。通过使用命令“ python manage.py inspectdb”从另一个项目导入数据库 一切都正确使用英文和俄文符号。 我添加了简单模型并进行了迁移。此模型仅适用于英文符号,但不能使用俄语符号
错误:
“异常类型:OperationalError
异常值:
(1366,“不正确的字符串值:第1行的“标题”列为'\ xD0 \ x94 \ xD0 \ xB8 \ xD0 \ xBC ...'))”
我认为这是编码的问题。
MySQL编码为latin1,更改为utf-8,但错误未解决。
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
请帮我在此模型中使用俄语符号。
另一个问题:此模型已迁移,我可以在django管理中看到它,但无法在所有表的数据库中的mysql中找到带有此模型的表。我不明白的是什么?
答案 0 :(得分:0)
我认为您正在期待Дим...
。
Django需要
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
...
'OPTIONS': {
'charset': 'utf8',
'use_unicode': True, },
},
}
(或utf8mb4)
Mysql编码为latin1,并更改为utf-8
您是如何进行更改的?请在其中一张表上提供SHOW CREATE TABLE
。并对一个显示西里尔字母的小样本执行SELECT col, HEX(col) ...
。可能会有更严重的问题,以及其他需要更改的问题。 (至少)有两种方法可以修复模式,一种方法是“正确的”,其余的使事情变得更糟。