我正在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魔法已经出现了严重错误。任何人都可以为我解开这个谜团吗?
其他一些可能有用的细节:
感谢您的帮助!
编辑:一些新信息:经过大量测试后,在使用django的./manage.py runserver命令时,我无法在生产服务器上复制错误 - 只出现错误在使用apache / wsgi服务器时发生。
这似乎缩小了问题的范围。是否有进一步追踪的建议?
答案 0 :(得分:0)
如果所有南迁移都已成功应用(你没有 - 找到它们中的任何一个,不是吗?),我想你可能已经从模型的旧状态遗留了一个已编译的.pyc文件。在项目根目录中尝试以下操作:
find . -name "*.pyc" -delete
答案 1 :(得分:0)
答案很愚蠢 - 重启apache和postgresql。多么美好的一天。