姜戈 "You have unapplied migrations"。哪个?

Django "You have unapplied migrations". Which ones?

Django runserver 抱怨:

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

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

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

如果您使用的是 1.8 或更高版本,请使用 python manage.py showmigrations --list。 (docs)

无论哪种情况,都会有一个 [X] 来显示应用了哪些迁移。

使用 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 的评论进行编辑。不错的收获。感谢您指出。

使用此命令后:

python manage.py migrate

你得到同样的错误:你有未应用的迁移;

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

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

在我的例子中,创建的数据库是 db.sqlite3 只需删除该文件并转到您的终端 并使用 manage.py makemigrations 后跟 manage.py migrate .

这对我有用。祝一切顺利

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

同样的文件,您将能够在您的数据库中看到它。如果您的数据库中缺少该文件,那么您的项目将抱怨 "un-applied migrations"。

所以只需转到您的数据库并手动为 auto_migration.py 创建一个条目。

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

python manage.py migrate --plan

它在 Django 2.2 中引入并记录在案 here