如何在Django的Mysql数据库中添加模型而不会出现问题并使用utf-8编码?

时间:2019-04-20 13:43:13

标签: python mysql django utf-8

我在使用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中找到带有此模型的表。我不明白的是什么?

1 个答案:

答案 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) ...。可能会有更严重的问题,以及其他需要更改的问题。 (至少)有两种方法可以修复模式,一种方法是“正确的”,其余的使事情变得更糟。