django和postgres的间歇性数据库错误:django有时会尝试查询我几周前删除的数据库

时间:2012-01-27 00:21:13

标签: django postgresql orm

我正在django中构建一个简单的Web应用程序,在开发中使用sqlite,并在生产中运行postgres。在我的本地服务器上一切正常,但我在生产方面遇到了一个奇怪的错误。

该错误会影响网站的多个部分,但最明显的示例是在管理页面上。有时当我去检查Sentence表中的条目时,我收到此错误:

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领域的。最重要的是,我不明白为什么错误偶尔会弹出。似乎django的ORM魔法已经出现了严重错误。任何人都可以为我解开这个谜团吗?

其他一些可能有用的细节:

  • 当错误发生时,它往往连续发生几次 - 好像数据库进入另一种模式几分钟。
  • 在网站的其他部分,错误的表现方式不同。当模板引用句子对象中的字段时,字段只是空白。我很难调试这个,因为问题只出现在某些时候,我无法在我的开发机器上复制它。
  • postgres是版本9.1.1;我正在使用psycopg2。
  • 我正在使用南方。但正如我之前所说,自问题开始以来,我完全放弃并重建了两个数据库 - 以及所有迁移 - 所以我怀疑南方是问题。
  • 我在bitnami djangostack上运行了所有这些。不知道为什么会产生任何影响,但你永远不会知道......

感谢您的帮助!

编辑:一些新信息:经过大量测试后,在使用django的./manage.py runserver命令时,我无法在生产服务器上复制错误 - 只出现错误在使用apache / wsgi服务器时发生。

这似乎缩小了问题的范围。是否有进一步追踪的建议?

2 个答案:

答案 0 :(得分:0)

如果所有南迁移都已成功应用(你没有 - 找到它们中的任何一个,不是吗?),我想你可能已经从模型的旧状态遗留了一个已编译的.pyc文件。在项目根目录中尝试以下操作:

find . -name "*.pyc" -delete

答案 1 :(得分:0)

答案很愚蠢 - 重启apache和postgresql。多么美好的一天。