我改变了一个模特来自
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')
如何解决此问题?
答案 0 :(得分:1)
Error1075“错误的表定义”来自Mysql,而不是Django。这是因为您更改的表具有2个自动创建的字段,而在Mysql中只有一个字段允许一个表。
在Django中,只需添加一个参数'auto_created':
serial_number = models.AutoField(primary_key = True,auto_created = False)
然后最后一次删除旧的迁移文件并再次进行迁移,可以继续迁移。
答案 1 :(得分:0)
到目前为止,唯一的“解决方案”是废弃所有迁移并重新创建数据库。从而摧毁了所有旧数据。但这并不像解决这种疯狂那样痛苦。