Как мне отформатировать таблицу MySql, чтобы избежать ошибки «Неверное строковое значение»? - PullRequest
0 голосов
/ 10 марта 2020

Я использую Python 3.7, Django 2.0 и Mysql 5.7, все настроено через docker контейнеры. Я пытаюсь вставить следующие начальные данные в одну из моих таблиц ...

- model: address.state
  pk: 14970
  fields:
    name: "Xocal\u0131"
    code: XCI
    country: 266

Это приводит к ошибке MySql: «Не удалось загрузить address.State (pk = 14750): ( 1366, "Неверное строковое значение: '\ xC4 \ x81n' для столбца" имя "в строке 1") "

web_1     |   File "/usr/local/lib/python3.7/site-packages/MySQLdb/cursors.py", line 209, in execute
web_1     |     res = self._query(query)
web_1     |   File "/usr/local/lib/python3.7/site-packages/MySQLdb/cursors.py", line 315, in _query
web_1     |     db.query(q)
web_1     |   File "/usr/local/lib/python3.7/site-packages/MySQLdb/connections.py", line 239, in query
web_1     |     _mysql.connection.query(self, query)
web_1     | django.db.utils.OperationalError: Problem installing fixture '/app/maps/fixtures/state_data.yaml': Could not load address.State(pk=14750): (1366, "Incorrect string value: '\\xC4\\x81n' for column 'name' at row 1")

Ниже описание моей таблицы ...

+---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| address_state | CREATE TABLE `address_state` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(165) NOT NULL,
  `code` varchar(3) NOT NULL,
  `country_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `address_state_name_country_id_a46a5987_uniq` (`name`,`country_id`),
  KEY `address_state_country_id_0a4efd43_fk_address_country_id` (`country_id`),
  CONSTRAINT `address_state_country_id_0a4efd43_fk_address_country_id` FOREIGN KEY (`country_id`) REFERENCES `address_country` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Что я могу сделать, чтобы отформатировать таблицу, чтобы я мог правильно вставить свое значение? Таблица была автоматически сгенерирована путем миграции на основе адресного модуля Django - https://github.com/furious-luke/django-address

1 Ответ

0 голосов
/ 10 марта 2020

CHARSET=latin1 - важный бит.

Вы можете изменить набор символов таблицы:

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