Я интегрирую базу данных MySQL из приложения php в новый проект Django. Inspectdb работал хорошо, мне просто пришлось изменить пару полей на ForeignKeys, и теперь все операции чтения и редактирования текущих данных работают отлично.
Проблема в том, что когда я пытаюсь создать новую запись, я получаю сообщение об ошибке «Поле 'id' не имеет значения по умолчанию»
. Отслеживание начинается с вызова form.save ()
, и исключение исходит от курсора MySQL. В большинстве случаев столбец называется id
, но в одном случае это именованное значение:
class ModelOne(models.Model): #normal "id" named pk
id = models.AutoField(primary_key=True, db_column='id', default=None)
other_fields = ...
class ModelTwo(models.Model): #specific pk
named_pk = models.AutoField(primary_key=True, db_column='named_pk',
default=None)
other_fields = ...
Для ModelTwo, когда я отправляю действительную форму POST, я получаю сообщение об ошибке, но затем, если я вернусь к своему список данных, новый элемент появляется! И после того, как я проверил последние значения id
в оболочке, я увидел, что они увеличиваются правильно.
Но для ModelOne (только с id
) ошибка все равно появляется, и pk становится 2147483647 (максимальное значение), а последующие сохранения завершаются неудачно из-за повторяющихся идентификаторов. (следующий по величине pk равен 62158)
Что мне нужно сделать, чтобы эти поля id работали правильно?
update: Все еще не удалось исправить это. Подумайте о том, чтобы выгрузить данные и импортировать их в свежие таблицы, созданные Django. Все еще ищу решение этой проблемы.
update2: Информация из оболочки базы данных
ModelOne:
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| id | int(11) | NO | PRI | NULL | auto_increment |
ModelTwo:
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| named_pk | int(11) | NO | PRI | NULL | auto_increment |