使用Django安装South的问题(没有创建south_migrationhistory表)

时间:2012-03-09 00:00:06

标签: python django migration django-south

我似乎无法使其发挥作用。

我需要South为一堆应用程序进行迁移。

  1. 下载南0.7.3
  2. 解压缩,运行setup.py开发(正如它在turorial中所说)
  3. 通过转到python解释器并执行(无错误),仔细检查南方是否应该在哪里

      

    import south

  4. 我做

  5. C:\Users\j\iMiCode\imi_admin>python ./manage.py syncdb
    
         

    同步......找不到固定装置。

    Synced:
     > django.contrib.auth
     > django.contrib.contenttypes
     > django.contrib.sessions
     > django.contrib.sites
     > django.contrib.messages
     > django.contrib.admin
    
    Not synced (use migrations): 
     - south (use ./manage.py migrate to migrate these)
    

    - 根据我的理解,南方本应该同步正确吗? 在此之后我做的任何其他事情都抱怨我在数据库中没有south_migrationhistory表。

    PS。我在Windows7上使用Django 1.2.7,python 2.6

3 个答案:

答案 0 :(得分:17)

在我看来,这就像南方的一个小虫。

这也可能是因为做错了,例如:运行schemamigration --auto south等。我的建议是通过运行python setup.py install easy_install 来安装它PIP

South文档说:“一旦添加了South,您需要运行./manage.py syncdb来制作南迁移跟踪表(由于各种原因,South不会为自己的模型使用迁移) 。“

但是你的输出说南方跳过为自己的模型制作表格,因为它认为南方应用程序使用了迁移

作为解决方法,您可以使用

python manage.py syncdb --all

这会导致无论迁移如何都会同步所有表格

python manage.py migrate --fake 

虚假迁移。

答案 1 :(得分:0)

对于没有现有表格的新应用程序,添加南方的步骤是:

  1. 将'south'添加到INSTALLED_APPS列表中。

  2. 确保您需要迁移的应用也在INSTALLED_APPS中。

  3. 从项目目录中运行./manage.py syncdb(或python manage.py syncdb)。这会将迁移表添加到数据库中。

  4. 从命令行执行./manage.py schemamigration yourappname --initial

  5. 运行./manage.py迁移yourappname

  6. 根据您提供的错误,听起来像是在步骤1& 2您忘记运行syncdb来创建迁移表,而南方应用程序找不到它想要存储模式迁移的位置。

答案 2 :(得分:0)

我遇到了同样的问题。事实证明,通过一些魔法,我在hte south app中创建了迁移。

发现者:

~ $ # cd to python library
~ $ cd `python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"`
python2.7/site-packages $ cd south
python2.7/site-packages/south $ ls migrations
   0001_initial.py  0002_initial.py 0003_initial.py __init__.py

这些都不好,不应该在那里,并且是南方跳过自己的原因。 删除所有东西,重新安装,然后syncdb再次工作。

python2.7/site-packages $ rm -rf south* South*
~ $ pip install south