South migrate error - relation already exists

Derek picture Derek · Feb 19, 2013 · Viewed 14k times · Source

Background: After adding djangoratings to my project, I tried running

django-admin.py schemamigration djangoratings --initial 
--settings=myapp.settings.local 

which resulted in an unknown command error for schemamigration. I tried to resolve this error by adding my project directory to the PYTHONPATH (I'm using virtualenv and virtualenvwrapper). This resolved the unknown command error for schemamigration, but I think I specified one directory above my project directory for the PYTHONPATH and when the initial migration was run for djangoratings, it complained about something to do with whoosh (which I am using in my project). I changed the PYTHONPATH directory and tried running

django-admin.py schemamigration djangoratings --initial 
--settings=myapp.settings.local

again. Then I ran the migrate command. This is when I received the error:

django.db.utils.DatabaseError: relation "djangoratings_vote" already exists

I tried migrating all the way back using:

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

and then running --initial again, but the same error occurred after performing the migrate command.

I looked at the list of tables in my database and didn't see any for djangoratings_vote.

My current migrations listing for djangoratings is as follows:

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

How can I resolve the relation "djangoratings_vote" already exists error? Preferably using South?

Answer

stef_huayue picture stef_huayue · Feb 5, 2015

there is a better way to solve it:

python manage.py migrate djangoratings --fake

and then:

python manage.py migrate