Django的Makemigrations和Migrate重复执行

3

我的django应用程序似乎出现了问题。有两个模型,一个进行了修改,另一个是新增加的。自从这两个更改以来,我的makemigrationsmigrate一直保持相同的变化,迁移编号不断递增。 当我运行makemigrations时:

Migrations for 'om':
  0033_auto_20200122_0001.py:
    - Alter field delivery_date on growerpurchaseorderitem
Migrations for 'accounts':
  0105_auto_20200122_0001.py:
    - Alter field created on pushtoken
    - Alter field push_token on pushtoken

当我进行 migrate 操作时

Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying accounts.0105_auto_20200122_0001... OK
  Applying om.0033_auto_20200122_0001... OK

我曾试图模拟一个迁移来解决这个问题,但没有成功。这是一个问题,因为任何新的更改都无法在我的模型中注册。

编辑:

显示迁移:

对于我的om

[X] 0030_auto_20200121_2339
 [X] 0031_auto_20200121_2343
 [X] 0032_auto_20200121_2348
 [X] 0033_auto_20200122_0001

为我的账户

[X] 0099_certpdf_expiration_date
 [X] 0100_pushtoken
 [X] 0101_auto_20200121_2145
 [X] 0102_auto_20200121_2339
 [X] 0103_auto_20200121_2343
 [X] 0104_auto_20200121_2348
 [X] 0105_auto_20200122_0001

1
你能添加迁移文件吗? - gdef_
@GregKaleka 是的,我可以从仪表板查看它们。 - Andy Nguyen
添加了迁移文件 @gdef_ - Andy Nguyen
你的模型字段是否具有可变的默认值,例如 datetime.now() - Klaus D.
很可能。只有在需要时,Django才应该进行调用。 - Klaus D.
显示剩余5条评论
2个回答

2
根据我的研究,这很可能是程序出错的地方:
Synchronizing apps without migrations:

尝试创建迁移,然后伪造第一个迁移:
python manage.py makemigrations <app_name>
python manage.py migrate --fake-initial

命令将跳过任何已经创建了表格的迁移。
附注:如果您不知道虚假迁移是什么,请查看解释

0
无论迁移时遇到什么问题,只需删除迁移文件夹中最后自动创建的文件,然后重新执行即可。
您也可以直接编辑它并运行:
python manage.py makemigrations

python manage.py migrate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接