Der*_*rek 12 migration django django-south
背景:在我的项目中添加djangoratings之后,我尝试了运行
django-admin.py schemamigration djangoratings --initial
--settings=myapp.settings.local
Run Code Online (Sandbox Code Playgroud)
这导致了schemamigration的未知命令错误.我试图通过将我的项目目录添加到PYTHONPATH来解决此错误(我使用的是virtualenv和virtualenvwrapper).这解决了schemamigration的未知命令错误,但是我想我在项目目录上面为PYTHONPATH指定了一个目录,当为djangoratings运行初始迁移时,它抱怨与whoosh有关(我在我的项目中使用) .我更改了PYTHONPATH目录并尝试运行
django-admin.py schemamigration djangoratings --initial
--settings=myapp.settings.local
Run Code Online (Sandbox Code Playgroud)
再次.然后我运行了migrate命令.这是我收到错误时:
django.db.utils.DatabaseError: relation "djangoratings_vote" already exists
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方式一直迁移:
django-admin.py migrate djangoratings zero --settings=myapp.settings.local
Running migrations for djangoratings:
- Migrating backwards to zero state.
< djangoratings:0006_add_cookies
< djangoratings:0005_add_exclusions
< djangoratings:0004_rethink_recommendations
< djangoratings:0003_add_correlations
< djangoratings:0002_add_mean_and_stddev
< djangoratings:0001_initial
Run Code Online (Sandbox Code Playgroud)
然后再次运行 - 初始化,但执行migrate命令后发生了同样的错误.
我查看了数据库中的表列表,并没有看到任何djangoratings_vote.
我目前的djangoratings迁移清单如下:
0001_initial.py 0006_add_cookies.py
0001_initial.pyc 0006_add_cookies.pyc
0002_add_mean_and_stddev.py 0007_initial.py
0002_add_mean_and_stddev.pyc 0007_initial.pyc
0003_add_correlations.py 0008_initial.py
0003_add_correlations.pyc 0008_initial.pyc
0004_rethink_recommendations.py 0009_initial.py
0004_rethink_recommendations.pyc 0009_initial.pyc
0005_add_exclusions.py __init__.py
0005_add_exclusions.pyc __init__.pyc
Run Code Online (Sandbox Code Playgroud)
我如何解决关系"djangoratings_vote"已经存在的错误?最好用南?
小智 24
有更好的方法来解决它:
python manage.py migrate djangoratings --fake
Run Code Online (Sandbox Code Playgroud)
然后:
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
Gil*_*ith 13
听起来好像South与您的数据库不同步(如果南方已经开始创建表,但是在没有完成向后迁移的情况下失败,则会发生这种情况).我建议手动恢复数据库和南,如下所示(如果出现错误,请先备份数据库):
完成此操作后,您应该拥有一个干净的数据库和南方历史记录.此时,重新运行:
./manage.py schemamigration djangoratings --initial
Run Code Online (Sandbox Code Playgroud)
这将生成一个迁移文件.然后:
./manage.py migrate djangoratings.
Run Code Online (Sandbox Code Playgroud)
假设您没有收到第一次出现的错误,这应该设置数据库,以便您可以使用django评级.
归档时间: |
|
查看次数: |
13860 次 |
最近记录: |