2011-02-03 4 views
7

Я новичок в мире django. Запуск некоторых обучающих приложений, а при запуске теста python manage.py я получаю отказ, говоря, что таблица уже существует. Я не уверен, что происходит. Я также бегу на юг, и у меня не было ошибок при переносе схемы.django - «manage.py test» failed «таблица уже существует»

Любое понимание очень ценится.

ТИА Joey

+0

Возможно, связанные с: http://stackoverflow.com/questions/3090648/django-south-table-already-exists – payne

+0

ДА! Вот и все, я допустил некоторые ошибки и получил миграцию из-за синхронности с db. чистые установки исправили его. –

ответ

15

Это может быть ошибка в одном из ваших южных миграций. Вы не видите проблему на реальном db, потому что миграция выполнена (возможно, с помощью опции fake)

Вы можете попытаться воссоздать db из scracth и посмотреть, работает ли он.

Вы также можете отключить Юг для модульных тестов, добавив SOUTH_TESTS_MIGRATE = False в свои settings.py. С помощью этой опции будет создан обычный syncdb для создания тестовой базы данных. Это также ускорит процесс тестирования.

Я надеюсь, что это помогает

+0

очень проницательный ответ! –

+0

если мне нужно нарисовать db с нуля, то в чем польза Юга? – Ahsan

+0

@ Ахсан БД создан с нуля только для тестов, и так происходит, независимо от того, используете ли вы Юг. –

0

и если вы проверяете с носом:

DST_RUN_SOUTH_MIGRATIONS = False

0

Это происходит и с носом, когда
--cover-package=userdata,incorrectname
Один из имени пакета некорректна

1

Это также произошло со старым кодом, но по другой причине.

У меня было две модели с db_table, ссылающиеся на ту же таблицу db. Я знаю, что это глупо, но это не моя вина)

И я ничего не нашел в Интернете, который мог бы мне помочь. Я был сохранен по набору слов до 3 (manage.py test -v 3) Надеюсь, это поможет кому угодно.

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

class Bla2(Model): 
    some_column = ... 
    class Meta: 
     db_table = 'some_table' 
Смежные вопросы