我犯了一个大错误,我在MySQL中没有'where'子句更新了一个表:'(
它是自动提交的。
有没有办法从它回滚?
答案 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的格式,那么您可以在&之前获取每行的值。更新后。使用它可以恢复表的状态。