TestCase для обнаружения DatabaseError: такого столбца нет - PullRequest
0 голосов
/ 16 ноября 2011

Недавно я добавил новое поле в одну из своих моделей и забыл добавить соответствующий столбец в таблицу в базе данных.У меня есть тестовые случаи, которые тестируют добавление нового экземпляра этой модели и изменение существующего экземпляра.Ни один из этих тестов не удался.Тем не менее, когда я пытаюсь изменить экземпляр с живого сайта, я получаю

DatabaseError, такого столбца нет

Я предпринял несколько попыток обнаружить эту ошибку из TestCase, нонет такой удачи.

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

Ответы [ 3 ]

1 голос
/ 16 ноября 2011

Проблема в том, что вы (я действительно, очень надеюсь) не используете вашу производственную базу данных для тестирования, поэтому все, что вы могли обнаружить, это то, что столбца нет в вашей тестовой базе данных, что (предположительно) воссоздан с нуля на основе определений модели, а не того, что столбец отсутствует в вашей производственной базе данных.

Лучшим подходом к решению этой проблемы является использование инструмента миграции, например South , и автоматизация процесса развертывания, чтобы миграция запускалась по мере развертывания нового кода.

Это будет работать только для небольших (ish) сайтов - вы можете обнаружить, что наивные миграции вызывают боль, если у вас есть сайт с большим трафиком. Если вы находитесь в такой ситуации, вы можете найти описание изменений схемы * Дэвида Крамера информативным.

0 голосов
/ 17 сентября 2014

Используйте следующую ссылку, это очень хорошее объяснение вашей проблемы.

http://amionrails.wordpress.com/2013/11/17/django-databaseerror-no-such-column-error/

0 голосов
/ 16 ноября 2011

К сожалению, использование команды syncdb недостаточно для обновления базы данных.

Вы можете вставить поля вручную с помощью вашей системы управления базами данных или использовать решение, например Юг .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...