django 迁移不更新数据库

django migrations does not update database

我的 django 应用程序已经在线并且 运行。我创建了新模型,如果我执行 makemigrations,它工作正常,但如果我想迁移它,那么我会收到 Running migrations:No migrations 申请。尽管我做了改变。更改也在迁移文件中。我正在使用它的 postgresql。我试图删除迁移文件并再次创建它,但没有帮助。知道哪里出了问题吗?

看起来有些迁移在数据库中被标记为应用不正确。这可以通过使用 --fake flag [Django docs] 将适当的迁移标记为已应用/将某些迁移标记为未应用来解决。

假设您的应用名为 myapp 并且迁移 0004 已正确应用 到数据库(您正在尝试应用 0005 或更进一步,这不起作用)那么你将 运行 以下命令:

python manage.py migrate myapp 0004 --fake

Note: myapp and 0004 is an example, do this according to your apps name and which migrations are applied.

编辑: 看来您已经删除了迁移。但值得庆幸的是有一些版本控制。最好是从版本控制中取回迁移文件。如果由于某种原因您无法这样做,请将模型恢复到更改前的状态,并确保暂时不存在迁移文件。接下来通过 运行ning makemigrations 生成迁移文件(检查它们是否符合预期并且您的数据库状态与这些生成的文件相对应)。接下来运行下面两条命令:

python manage.py migrate <appname> zero --fake
python manage.py migrate <appname> --fake

第一个会将应用程序的所有迁移标记为未应用。第二个会将所有迁移标记为已应用。接下来,您将要将要进行的更改添加回模型并再次迁移。