Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PostgreSQL中回滚更新_Postgresql_Rollback - Fatal编程技术网

如何在PostgreSQL中回滚更新

如何在PostgreSQL中回滚更新,postgresql,rollback,Postgresql,Rollback,在终端(ubuntu lucid)中使用sql编辑PostgreSQL数据库中的一些记录时,我进行了错误的更新 而不是- update mytable set start_time='13:06:00' where id=123; 我打字- update mytable set start_time='13:06:00'; 因此,所有记录现在都具有相同的开始时间值 有没有办法撤消此更改?表中大约有500多条记录,我不知道每条记录的开始时间值是多少 它会永远丢失吗?我假设它是一个已经提交的事务

在终端(ubuntu lucid)中使用sql编辑PostgreSQL数据库中的一些记录时,我进行了错误的更新

而不是-

update mytable set start_time='13:06:00' where id=123;
我打字-

update mytable set start_time='13:06:00';
因此,所有记录现在都具有相同的开始时间值

有没有办法撤消此更改?表中大约有500多条记录,我不知道每条记录的开始时间值是多少


它会永远丢失吗?

我假设它是一个已经提交的事务?如果是,那就是“承诺”的意思,你不能回去

如果幸运的话,某些数据可能是可恢复的。现在停止数据库

。我希望这会有帮助

这可能太过分了:


除非数据是绝对关键的,否则只需从备份中恢复,就可以轻松得多,痛苦也小得多。如果你没有备份,考虑你自己被彻底破坏了。

如果你发现错误,并立即使用数据库将任何应用程序脱机,并将其脱机,那么你可以使用点到点恢复(PITR)来重写你的写前日志(WAL)文件,但不包括。错误交易发生的时刻。这将使数据库返回到之前的状态,从而有效地“撤消”该事务

作为生产应用程序数据库的一种方法,它有许多明显的局限性,但在某些情况下,PITR可能是可用的最佳选择,尤其是在发生关键数据丢失时。但是,如果在发生损坏事件之前尚未配置存档,则此功能没有任何价值


其他关系数据库引擎也有类似的功能。

未来:不应在启用自动提交的情况下运行。经验教训!在进行更新之前始终进行备份,只是要确保!如果您启用了时间点恢复(PITR),这是可能的。谢谢。我停止了postgres服务。现在有什么方法可以恢复数据吗?@damon获取整个数据库的文件系统级副本,并将其放在安全的地方。