如何在PostgreSQL中回滚更新
在终端(ubuntu lucid)中使用sql编辑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多条记录,我不知道每条记录的开始时间值是多少 它会永远丢失吗?我假设它是一个已经提交的事务
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获取整个数据库的文件系统级副本,并将其放在安全的地方。