我的旧项目出现 Django 1.7 迁移问题
Posted
技术标签:
【中文标题】我的旧项目出现 Django 1.7 迁移问题【英文标题】:Django 1.7 Migrations issue with my old project 【发布时间】:2015-01-02 12:54:56 【问题描述】:我有一个 django 1.5 应用程序,现在我将它迁移到 django 1.7 并且应用程序在旧数据库上运行良好。但现在我想使用 django 1.7 为该应用创建迁移。
我删除了旧的迁移,只保留了带有 __ init__ 文件的迁移文件夹
然后我跑了./manage.py makemigrations
在运行 ./manage.py migrate
时会出现一些错误。
django.db.utils.ProgrammingError: relation "django_site" does not exist
LINE 1: SELECT (1) AS "a" FROM "django_site" LIMIT 1
我已将 django_sites 添加到已安装的应用程序中。
在更新到本机迁移时,是否有任何特定的方式来创建/应用迁移?
【问题讨论】:
【参考方案1】:您有一个依赖于 django.contrib.site 的迁移,但相关的表不可用。 你可以
在 INSTALLED_APPS 中将 django.contrib.site 向上移动 检查您的迁移的属性dependencies
无论如何,我认为您的问题在于某些字段的默认值。
如果您没有找到相关的应用程序,您可以:
-
禁用 INSTALLED_APPS 中的所有应用程序
启用第一个
运行 makemigrations
删除所有迁移
启用下一个应用程序
运行 makemigrations
...重复步骤 4..6,直到出现错误
【讨论】:
【参考方案2】:来自the documentation:
如果您已经使用 South 创建了预先存在的迁移,那么使用 django.db.migrations 的升级过程非常简单:
确保所有安装都与它们的迁移完全同步。 从 INSTALLED_APPS 中删除“南”。 删除所有(编号的)迁移文件,但不要删除目录或 init.py - 确保也删除 .pyc 文件。 运行 python manage.py makemigrations。 Django 应该看到空的迁移目录并以新格式进行新的初始迁移。 运行 python manage.py 迁移。 Django 将看到初始迁移的表已经存在,并将它们标记为已应用而不运行它们。
我怀疑你忘了
find . -iname "*.pyc" | xargs rm
【讨论】:
以上是关于我的旧项目出现 Django 1.7 迁移问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 1.7 迁移之前运行 South 迁移的推荐方法是啥?