我有一个小的python脚本将数据推送到我的django postgres db。 它从django项目导入相关模型,并使用.save函数将数据保存到数据库而不会出现问题。
昨天系统运行正常。我在一天中开始并多次停止我的django项目和python脚本,但从未重新启动或关闭计算机电源,直到当天结束。
今天我发现数据不再存在于数据库中了!
这看起来很愚蠢,因为我可能忘记做一些明显的事情,但我认为当从模型调用save函数时,数据将被提交给db。
答案 0 :(得分:1)
所以这个答案是“从哪里开始排除这样的问题”,因为问题非常模糊,我们没有足够的信息来有效排除故障。
如果再次发生这种情况,首先要做的是打开PostgreSQL的语句记录并查看它们进来时的语句。这应该显示begin和commit语句以及查询。如果不访问查询,几乎不可能解决此类问题。要查找的内容包括缺少COMMIT和缺少语句。
之后,接下来要做的是查看计算机重新启动的环境。是否有可能在预期提交之前这样做?或者它是否会断电并且没有及时将事务日志刷新到磁盘上?
这两个应该排除开发环境中db端的所有可能原因。在旧版本的PostgreSQL的生产环境中,您确实需要验证系统是否已正确运行autovacuum,并且您没有收到有关xid环绕的警告。在较新的版本中,这不是问题,因为PostgreSQL在接近xid环绕时将拒绝接受查询。