如何将现有的 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 跟踪。
我在 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 跟踪。