6

我在南方与我的 django 项目一起工作时遇到了麻烦,我遵循了关于将应用程序转换为南方的南方文档,也看了这里(为什么我的南方迁移不起作用?)但一切都是徒劳的。

添加到南INSTALLED_APPS并运行后syncdb

Synced:
 > django.contrib.messages
 > django.contrib.staticfiles
 > smartmin
 > nsms.console
 > django_extensions
 > pagination
 > restaurant_detail
 > live
 > debug_toolbar
 > orders
 > django.contrib.admindocs

Not synced (use migrations):
 - django.contrib.auth
 - django.contrib.contenttypes
 - django.contrib.sessions
 - django.contrib.sites
 - guardian
 - south
 - django_quickblocks
 - rapidsms
 - rapidsms_httprouter
 - sorl.thumbnail
 - djangoratings
 - agon_ratings
 - django.contrib.admin
(use ./manage.py migrate to migrate these)

此时我执行此命令,python manage.py migrate这给出了错误django.db.utils.DatabaseError: relation "south_migrationhistory" does not exist LINE 1: ...gration", "south_migrationhistory"."applied" FROM "south_mig... 我在这里做错了什么?

4

5 回答 5

14

如果这是您的第一次迁移,或者您只想重新开始:

  1. 删除并创建您当前的数据库
  2. 删除您的迁移目录:rm -Rf your_app/migrations/
  3. 只需一个命令即可同步和迁移:python manage.py syncdb --migrate

下一次迁移需要:

  1. python manage.py schemamigration your_app --auto
  2. python manage.py migrate your_app

这对我行得通 :)

于 2013-04-22T11:01:54.047 回答
4

这一切都是因为我的南方site_packages已经有一个迁移目录,我不知道它在那里。当我摆脱目录时,一切都很好。向那些辛勤工作以解决由于我的心不在焉引起的问题的 stackoverflow 人员表示歉意。

于 2013-04-26T12:34:21.053 回答
2

这个问题可以通过遵循善意的建议来解决:如果您python manage.py schemamigration south --initial在调试尝试中的任何时候尝试过,您将在 South 应用程序本身的站点包中创建一个“迁移”文件夹。不幸的是,migrations文件夹的存在是 South 在执行更改后的 syncdb 进程时确定是否应该跳过应用程序的方式。包括如果那个应用程序......是南方。

当您删除数据库并尝试从头开始调试时,South 修改后的 syncdb 将跳过创建south_migrationhistory表,假设迁移文件夹会更好地了解,并且迁移表需要该south_migrationhistory表才能工作。

要解决问题:

  1. 进入您的站点包并删除migrations/南应用程序中的文件夹。
  2. 最后运行python ./manage.py syncdb一次

通过 pip 卸载/重新安装 South 实际上不会删除它,因为它会使有问题的文件夹保持不变。

或者,Marius Grigaitis提出了针对同一错误的解决方法,尽管当时它被归咎于南方虫子。

于 2014-02-23T22:49:44.320 回答
1

您必须先迁移 south 本身以创建 south 表,然后才能迁移其他应用程序:

# python manage.py migrate south
# python manage.py migrate
于 2013-04-22T11:06:46.353 回答
0

似乎没有在您的数据库中创建迁移表。这有点奇怪,也许这会起作用:

python manage.py schemamigration south --initial
python manage.py migrate south

然后继续其他迁移。

于 2013-04-22T18:28:33.960 回答