Ошибка миграции Django: поле 'name' не имеет значения по умолчанию - PullRequest
0 голосов
/ 05 марта 2019

У меня есть приложение Django, которое недавно было обновлено с 1.4.5 до 1.11.16. Он работал на более старой версии Debian Linux, которая была переустановлена ​​и сейчас является 9.6. Первоначально база данных была mysql (установка Debian по умолчанию), а теперь это mariadb (также установка по умолчанию).

Поскольку проекты небольшие, оптимизации БД практически не было, почти все работало с настройками по умолчанию. Перед переустановкой и обновлением БД была сброшена и позже загружена. Первоначально он использовал типы таблиц myisam, но теперь по умолчанию используется innodb.

Всякий раз, когда я пытаюсь создать новую таблицу (модель Джанго) с самой простой настройкой, e. g.:

class Sth(models.Model):
    car = models.CharField(max_length=128)

мне грозит следующее предупреждение:

/home/user/.virtualenvs/prj/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py:101: Warning: Field 'name' doesn't have a default value

return self.cursor.execute (query, args)

. Что это значит и почему оно появляется? Если установлен строгий режим, это даже становится ошибкой.

Каким было бы решение этой проблемы? Зная об изменении системы debian (mysql -> mariadb) и обновлении django (1.4.5 -> 1.11.16), о чем мне думать?

Я также попытался изменить текущие таблицы на innodb, а также изменить тип mariadb по умолчанию на myisam, но это не помогает.


SQL-запросы из журнала mysql во время выполнения миграции:

CREATE TABLE `infokom_sth` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `car` varchar(128) NULL)
INSERT INTO `django_migrations` (`app`, `name`, `applied`) VALUES ('infokom', '0004_sth', '2019-03-05 22:25:54.360285')
INSERT INTO `django_content_type` (`app_label`, `model`) VALUES ('infokom', 'sth')
INSERT INTO `auth_permission` (`name`, `content_type_id`, `codename`) VALUES ('Can add sth', 27, 'add_sth'), ('Can change sth', 27, 'change_sth'), ('Can delete sth', 27, 'delete_sth')
...