如何将现有的 Django 项目迁移到新的空数据库(或模式)?

How to migrate an existing Django project to a new and empty database (or schema)?

我在 Django(1.7.6 版)项目上工作了好几个月。在这段时间里,每个应用程序都得到了很好的发展,现在有几十个迁移。

我想将这个项目部署到一个新的开发环境中。我用一个空模式设置了一个数据库并相应地更新了 settings.py。现在我想从迁移中重新创建数据库结构,但是当我 运行 python manage.py migrate:

时出现以下异常

File "/usr/lib/python2.7/dist-packages/django/db/backends/utils.py", line 65, in execute return self.cursor.execute(sql, params) django.db.utils.ProgrammingError: table "modules_server_proj_locations" does not exist

modules_server_proj_locations 指的是不再存在的多对多关系,但出于某种原因,迁移仍在尝试使用它。

然后我尝试使用 --fake 选项进行迁移,但这只会导致不同的异常:

File "/usr/lib/python2.7/dist-packages/django/contrib/contenttypes/models.py", line 58, in get_for_model " is migrated before trying to migrate apps individually." RuntimeError: Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually.

我应该如何进行?

如果这是您的第一个版本,那么您可以删除整个数据库,删除所有迁移文件,然后 运行 python manage.py makemigrations 以获得干净的数据库和迁移主题。否则,您可能必须编辑迁移文件并从所有文件中删除 table 跟踪。