OperationalError1075'表定义不正确'

时间:2015-09-08 07:29:32

标签: django django-models

我改变了一个模特来自

serial_number = models.BigIntegerField(unique=True)

serial_number = models.AutoField(primary_key=True)

然后跑

$ python manage.py check -v 3
$ python manage.py makemigrations -v 2
$ python manage.py migrate -v 2

但是,当我尝试运行单元测试(之前通过时),我收到此错误:

[...]
  File "/home/usr/Envs/intranet/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue django.db.utils.OperationalError: (1075, 'Incorrect table definition; there can be only one auto column and it must be defined as a key')

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

Error1075“错误的表定义”来自Mysql,而不是Django。这是因为您更改的表具有2个自动创建的字段,而在Mysql中只有一个字段允许一个表。

在Django中,只需添加一个参数'auto_created':

serial_number = models.AutoField(primary_key = True,auto_created = False)

然后最后一次删除旧的迁移文件并再次进行迁移,可以继续迁移。

答案 1 :(得分:0)

到目前为止,唯一的“解决方案”是废弃所有迁移并重新创建数据库。从而摧毁了所有旧数据。但这并不像解决这种疯狂那样痛苦。