我似乎无法使其发挥作用。
我需要South为一堆应用程序进行迁移。
通过转到python解释器并执行(无错误),仔细检查南方是否应该在哪里
import south
我做
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
答案 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)
对于没有现有表格的新应用程序,添加南方的步骤是:
将'south'添加到INSTALLED_APPS列表中。
确保您需要迁移的应用也在INSTALLED_APPS中。
从项目目录中运行./manage.py syncdb(或python manage.py syncdb)。这会将迁移表添加到数据库中。
从命令行执行./manage.py schemamigration yourappname --initial
运行./manage.py迁移yourappname
根据您提供的错误,听起来像是在步骤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