我怎样才能回滚我的最后一个删除命令在MySQL中?
我不小心删除了一些巨大的不。 从表中的行
我怎样才能回滚?
我使用腻子执行查询…
如果你们中的任何一个能够安全地引导我离开,我将不胜感激。
如果你还没有做出备份,那么你已经非常困惑了。
如果您还没有提交事务,请尝试rollback
。 如果您已经提交了事务(通过commit
或退出命令行客户端),则必须从上次备份中还原数据。
如果您使用交易,则“回滚”function才有效。 这样,您可以将查询分组在一起,如果其中只有一个查询失败,可以撤消所有查询
但是,如果您已经提交了事务(或者使用了常规的DELETE查询),那么获取数据的唯一方法就是从先前进行的备份中恢复数据。
接受的答案并不总是正确的。 如果在mysql上configuration二进制日志logging,则可以将数据库回滚到任何以前的点,但仍有快照和二进制日志。 http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html是了解这个设施的一个很好的起点。;
在开始查询之前使用BEGIN TRANSACTION
命令。 这样你就可以在任何时候ROLLBACK
事物。
例如:
- 开始交易
- 从学生中select*
- 从学生删除Id = 2
- 从学生中select*
- 回滚
- 从学生中select*
回滚通常不会在这个删除function上工作,当然一个备份只能保存你。 如果没有备份,那么没有办法恢复它作为删除查询运行在腻子上,德比使用.sql文件是自动提交一旦你激发删除查询。
如果您想先回滚数据,您需要执行autocommit = 0,然后执行查询删除,插入或更新。 执行查询后,执行回滚….
我也从我的开发数据库中删除了一些值,但我有相同的副本在QA数据库,所以我做了一个生成脚本和select选项“数据types的脚本”,“数据只”,select我的表,然后我得到插入语句与相同的数据,然后我在我的开发数据库上运行脚本。