Как можно без проблем добавить модель в базу данных Mysql в django и с кодировкой utf-8? - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть проект на Django с Mysql. Базы данных были импортированы из другого проекта с помощью команды "python manage.py inspectdb" Все работало правильно с английскими и русскими символами. Я добавил легкую модель и перенес ее. Эта модель корректно работает только с английскими символами, но с русскими символами не работает

Ошибка: «Тип исключения: OperationalError Значение исключения:
(1366, "Неверное строковое значение: '\ xD0 \ x94 \ xD0 \ xB8 \ xD0 \ xBC ..." для столбца "title" в строке 1 ")"

Я думаю, что это проблема с кодировкой.

Mysql-кодировка была латинской1 и заменена на 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 голосов
/ 27 апреля 2019

Полагаю, вы ожидали Дим....

Джанго нуждается

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
                    'charset': 'utf8',
                    'use_unicode': True, },
    },
}

(или utf8mb4)

Mysql-кодировка была латинской1 и изменена на utf-8

Как вы внесли изменения? Пожалуйста, укажите SHOW CREATE TABLE на одной из таблиц. И сделайте SELECT col, HEX(col) ... для небольшого образца, который должен показывать кириллицу. Могут быть и более серьезные проблемы, а также другие вещи, которые необходимо изменить. Есть (по крайней мере) два способа исправить схему, один из которых «правильный», остальные делают вещи хуже .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...