Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 我怎样才能让我的南迁工作?_Django_Migration_Django South - Fatal编程技术网

Django 我怎样才能让我的南迁工作?

Django 我怎样才能让我的南迁工作?,django,migration,django-south,Django,Migration,Django South,我很难让south来处理我的django项目,我遵循了south关于将应用程序转换为south的文档,也查看了这里(),但都是徒劳的 将south添加到已安装的应用程序并运行syncdb后 Synced: > django.contrib.messages > django.contrib.staticfiles > smartmin > nsms.console > django_extensions > pagination > res

我很难让south来处理我的django项目,我遵循了south关于将应用程序转换为south的文档,也查看了这里(),但都是徒劳的

将south添加到已安装的应用程序并运行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\u migrationhistory”不存在
第1行:…分划“,”南方移民历史“,”应用“来自南方移民。。。

我做错了什么?

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

  • 删除并创建当前数据库
  • 删除您的迁移目录:
    rm-Rf您的应用程序/migrations/
  • 只需一个命令即可同步和迁移:
    python manage.py syncdb--migrate
  • 下一次迁移需要:

  • python manage.py模式迁移您的应用程序--auto
  • python manage.py迁移您的应用程序

  • 这对我很有用:)

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

    # python manage.py migrate south
    # python manage.py migrate
    

    似乎没有在数据库中创建迁移表。这有点奇怪,也许这会奏效:

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

    然后继续进行其他迁移。

    这一切都是因为在我的
    站点包中,south已经有了一个迁移目录,我不知道它在那里。当我去掉这个目录时,一切都很好。
    
    Apologies stackoverflow的同事们,他们努力解决由于我心不在焉而引起的问题。

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

    当您删除数据库以尝试从头开始调试时,South修改的syncdb将跳过创建
    South_migrationhistory
    表,前提是migrations文件夹更清楚,并且migrations表需要
    South_migrationhistory
    表才能工作

    要解决这个问题:

  • 进入你的网站包,删除south应用程序中的
    migrations/
    文件夹
  • 最后运行一次python./manage.py syncdb
  • 通过pip卸载/重新安装South并不会真正删除它,因为它会保留不受影响的文件夹


    或者,针对同一个错误提出了解决方案,尽管它在当时被归因于一个南方错误。

    您尝试过syncdb吗--migrate@Charl它在你安装的应用程序中返回相同的错误?是的,它是@krak3n,如果不是的话,我会得到一个不同的错误..这是一个救生圈,当你执行pip卸载south时,该文件夹甚至不会被删除:)如果你没有south表,你想将south表添加到你不存在的south表中吗?@Liarez我非常感谢你的反馈,但正如你所看到的,这个问题的答案有点奇怪,而且已经快一年了。当我回答这个问题时,我只是有一种预感(正如你所看到的,还有其他人)。你希望我怎么提醒你我当时在想什么?不管怎样,请随意否决:)我只是遇到了这个问题,我看到很多人重复你的答案,如果南方不努力移民到他自己身上,那就没有任何意义了,这就是为什么否决,因为答案根本没有帮助all@Liarez很公平。很高兴您找到了问题的答案。注意:您可能需要删除其他目录中的迁移文件夹,如
    site packages/django/contrib/auth/migrations