Django“你有未应用的迁移”。哪个?

时间:2015-07-04 16:12:42

标签: django

Django runserver抱怨:

You have unapplied migrations; 
your app may not work properly until they are applied. 
Run 'python manage.py migrate' to apply them.

如何在不运行迁移的情况下找出未应用的迁移?

5 个答案:

答案 0 :(得分:65)

如果您使用的是1.7,请使用python manage.py migrate --list。 (docs

如果您使用的是1.8或以上,请使用python manage.py showmigrations --list。 (docs

在任何一种情况下,都会有 [X] 来显示已应用的迁移。

答案 1 :(得分:13)

使用grep对Kevin的回答进行微小修改,仅显示未应用的迁移

Django 1.7:

python manage.py migrate --list | grep -v '\[X\]'

Django 1.8及以上版本:

python manage.py showmigrations --list | grep -v '\[X\]'

在ngoue评论后编辑。很好的抓住。谢谢你指出来。

答案 2 :(得分:2)

使用此命令后:

python manage.py migrate

您收到相同的错误:您有未应用的迁移;

解决此错误的简单方法是 转到项目目录,搜索在命令

之后创建的数据库目录
python manage.py migrate

在我的情况下,db创建的是 db.sqlite3 只需删除该文件即可转到您的终端 并使用manage.py makemigrations后跟manage.py migrate

这对我有用。一切顺利

答案 3 :(得分:1)

使用--plan命令的migrate选项,您可以看到仅未应用的迁移的列表:

python manage.py migrate --plan

它在Django 2.2中引入,并记录在here中。

答案 4 :(得分:0)

运行迁移命令(python manage.py migrate)后,它始终会在该特定应用程序中生成一个auto_migration.py文件。

您也可以在数据库中看到相同的文件。如果您的数据库中缺少该文件,则您的项目将抱怨“未应用的迁移”。

因此,只需进入数据库并手动为auto_migration.py创建一个条目。