У меня есть приложение 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')