Прерывистая ошибка базы данных с django и postgres: django иногда пытается запросить базу данных, которую я удалил несколько недель назад - PullRequest
0 голосов
/ 27 января 2012

Я создаю простое веб-приложение в django, использую sqlite в разработке и запускаю postgres в производстве.На моем локальном сервере все работает нормально, но я столкнулся со странной ошибкой на производственной стороне.

Ошибка затрагивает несколько частей сайта, но самый яркий пример - на странице администратора.Иногда, когда я просматриваю записи в таблице предложений, я получаю эту ошибку:

DatabaseError at /admin/treeLing_app/sentence/

column treeLing_app_sentence.sexp does not exist
LINE 1: ...ce"."comment_id", "treeLing_app_sentence"."text", "treeLing_...
                                                         ^

В этом смущает то, что поле sexp (для "s-expression") включено только в оченьранние версии дизайна базы данных.Там нет никаких следов этого в коде.С тех пор я также удалил и заново создал базы данных для разработки и производства.

Итог: я не могу понять, как django / postgres знает о старом поле sexp.Кроме того, я не понимаю, почему ошибка появляется только изредка.Кажется, что-то пошло не так с магией, которая является ORM Джанго.Может ли кто-нибудь разгадать эту загадку для меня?

Несколько других деталей, которые могут быть полезны:

  • Когда возникает ошибка, она, как правило, происходит несколько раз подряд - как будтоБД переходит в другой режим на несколько минут.
  • В других частях сайта ошибка проявляется по-разному.Когда шаблоны ссылаются на поля в объектах предложения, поля просто пустые.Мне было трудно отлаживать это, потому что проблема обнаруживается только время от времени, и я не смог ее воспроизвести на моей машине для разработки.
  • postgres - версия 9.1.1;Я использую psycopg2.
  • Я использую Юг.Но, как я уже говорил ранее, я полностью удалил и заново создал обе базы данных - вместе со всеми миграциями - с тех пор, как возникла проблема, поэтому я сомневаюсь, что проблема в South.
  • Я запускаю все это наБитнами Джангостак.Не уверен, почему это будет иметь какое-то значение, но вы никогда не знаете ...

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ : Некоторая новая информация: после долгих летВо время тестирования я не смог воспроизвести ошибку на производственном сервере при использовании команды django ./manage.py runserver - ошибка возникает только при использовании сервера apache / wsgi.

Это кажетсячтобы сузить проблему.Любые предложения для дальнейшего отслеживания?

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Глупый ответ - перезапустите apache и postgresql. Что за день.

0 голосов
/ 27 января 2012

Если все миграции на юг были успешно применены (вы не ... не фальсифицировали ни одну из них, не так ли?), Я думаю, возможно, у вас есть скомпилированный файл .pyc, оставшийся от более старого состояния моделей. Попробуйте следующее в корне проекта:

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