我正在将来自php应用程序的MySQL数据库集成到新的Django项目中。 Inspectdb运行良好,我只需要将几个字段更改为ForeignKeys,现在所有读取和编辑当前数据的工作都很好。Django - 遗留数据库和'id'字段的问题
问题是当我尝试创建新条目时,出现错误"Field 'id' doesn't have a default value"
。回溯从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,当我发布一个有效的形式,我得到的错误,但以后我回到我的数据列表,新项目显示!在我检查了shell中最新的id
值后,我可以看到它们正在递增。
但是对于ModelOne(只有id
),错误仍然显示,并且pk变为2147483647(最大值),并且后续保存由于重复的id而失败。 (下一个最高PK只有62158)
我需要做些什么才能让这些ID字段正常工作?
更新:仍然没有运气修复此。考虑转储数据并将其导入新的,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 |
如果删除了'默认会发生什么=无'? –
@Daniel Roseman - 同样的事情。我只是试图直接解决错误指向的错误 –