我犯了一个大错误,我在 MySQL 中更新了一个没有“where”子句的表:'(
它是自动提交的。
有没有办法从它回滚?
不,没有任何查询可以“撤消”已提交的数据修改查询。
如果您有数据库的备份,则可以恢复备份并使用 DBA 工具(在 MySQL 的情况下,它是mysqlbinlog)从备份回数据库后的日志中“重播”所有数据修改查询,但跳过问题查询。
如果您没有备份以及自该备份以来的所有日志,则您无法恢复数据。
查找事务日志。我会更新更多信息,但日志可能只会在有限的时间内保留,所以时间至关重要!
请参阅:http ://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html
如果您启用了 mysql binlog 并且它是基于 ROW 的格式,那么您可以获取更新前后每一行的值。使用它可以恢复表的状态。