Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django - "manage.py test" fails "table already exists"

Tags:

python

django

I'm new to the django world. Running some tutorial apps, and when running python manage.py test i'm getting a failure saying that the table already exists. I'm not sure what is going on. I am also running south, and I got no errors when migrating the schema.

Any insight is greatly appreciated.

TIA Joey

like image 419
Joey Blake Avatar asked Feb 03 '11 03:02

Joey Blake


2 Answers

It might be an error in one of your south migrations. You don't see the problem on the real db because the migration has been executed (with the--fake option maybe)

You can try to recreate the db from scracth and see if it works.

You can also disable South for unit-tests by adding SOUTH_TESTS_MIGRATE = False in your settings.py. With this option a regular syncdb will be done to create the test database. It will also speed the testing process.

I hope it helps

like image 111
luc Avatar answered Oct 29 '22 17:10

luc


This also happened to me with a legacy code but for another reason.

I had two models with db_table referencing the same db table. I know that is stupid, but it's not my fault )

And I never found anything on the internet that could help me. I was saved by verbosity set to 3 (manage.py test -v 3) Hope this helps anyone.

class Bla1(Model):
    some_column = ...
    class Meta:
        db_table = 'some_table'

class Bla2(Model):
    some_column = ...
    class Meta:
        db_table = 'some_table'
like image 42
Dmitriy Kuznetsov Avatar answered Oct 29 '22 18:10

Dmitriy Kuznetsov