如何在phpmyadmin中撤消查询执行

时间:2011-01-29 10:50:36

标签: php mysql

如何在phpmyadmin中撤消查询执行。

有任何回滚功能吗?任何人都知道解决方案,请帮助我?

5 个答案:

答案 0 :(得分:26)

如果该语句仍在运行,您可以使用KILL QUERY <thread_id>

如果声明已完成但您尚未提交交易,则可以使用ROLLBACK

如果声明已完成且交易已提交(或您未启动交易),则从最近的备份中恢复数据。


此处还有一些提示建议,以便首先防止此类情况发生:

  • 编写DELETE或UPDATE时,请先写入WHERE子句,这样就不会忘记它。
  • 在SELECT语句中测试WHERE子句以确保更新正确的行。
  • 如果您知道只应更新一行,则可以将LIMIT 1添加到UPDATE语句中。然后,如果尽管使用了上述技术,您仍然会出现错误,至少只会影响一行,而不是整个数据库。

答案 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建议的内容。