在MySQL中提交后有没有办法回滚?

时间:2012-12-24 02:01:33

标签: mysql sql-update rollback autocommit

我犯了一个大错误,我在MySQL中没有'where'子句更新了一个表:'(

它是自动提交的。

有没有办法从它回滚?

3 个答案:

答案 0 :(得分:12)

不,没有任何查询会“撤销”已提交的数据修改查询。

如果你有数据库的备份,你可以恢复备份并使用DBA工具(在MySQL的情况下,它是mysqlbinlog)来“重放”来自日志的所有数据修改查询,因为备份回到数据库,但跳过问题查询。

如果您没有备份以及自该备份以来的所有日志,则无法恢复数据。

答案 1 :(得分:1)

查找事务日志。我将更新更多信息,但日志可能只会在有限的时间内保持不变,所以时间至关重要!

请参阅:http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html

答案 2 :(得分:0)

如果您启用了mysql binlog并且它是基于ROW的格式,那么您可以在&之前获取每行的值。更新后。使用它可以恢复表的状态。