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