如何在phpmyadmin中撤消查询执行。
有任何回滚功能吗?任何人都知道解决方案,请帮助我?
答案 0 :(得分:26)
如果该语句仍在运行,您可以使用KILL QUERY <thread_id>
。
如果声明已完成但您尚未提交交易,则可以使用ROLLBACK
。
如果声明已完成且交易已提交(或您未启动交易),则从最近的备份中恢复数据。
此处还有一些提示建议,以便首先防止此类情况发生:
答案 1 :(得分:2)
您可以转到“流程”页面并按“杀死”
答案 2 :(得分:1)
如果你删除了某些东西,那么我不认为它会回来,除非你有备份。我知道在sql你有时可以逃脱ROLLBACK调用之前你提交一系列SQL命令但只在事务中,并且你必须首先启动它们(phpMyAdmin不使用它)。
答案 3 :(得分:1)
如果您需要能够在提交更新之前恢复以前的数据,那么您可以使用更新和删除触发器重构数据库,以将旧数据存储在具有当前日期/时间戳或(最好)a的存档表中事务ID值(并确保插入始终存储当前日期/时间戳或事务ID值)...有效地维护对数据库所做的每个更改的完整历史记录。请注意,您的数据库将以令人难以置信的速度增长......这只是关键任务数据的解决方案,其中历史记录是必不可少的,因为它需要花费很多精力来实现,并且需要维护大量昂贵的磁盘空间。即使这样,如果对受影响的数据进行了后续更新,它也会变得非常复杂;并且你可能需要在恢复到以前的历史时“丢失”那些。
我只能想到实现此类历史维护的极少数系统......例如Oracle Financials或HR。
或者,有一些数据库(我曾经使用过旧的DEC RDBMS)可以维护RUJ(运行单元日志),然后可以用来从备份恢复到设定的时间/事务。但是,MySQL并不属于这一类。同样,它需要大量磁盘空间,并且仅在您定期备份数据时才实用,并且恢复过程更复杂。 MySQL(据我所知)不支持此功能。
对于大多数人来说,更实用的方法是从备份中进行简单的还原,然后可能会进行一些手动重新创建。不幸的是,现在大多数人甚至都没有备份。
答案 4 :(得分:0)
如果你已经提交了这笔交易,我恐怕无法“撤消”它。这是ACID的核心原则之一。如果你还没有提交它:只做一个rollback
,你没事。
您需要从备份中恢复数据 - 或者如果查询正在运行,请使用kill query
尝试Mark Byers建议的内容。