如何在phpmyadmin中撤消查询执行

如何在phpmyadmin中撤消查询执行,php,mysql,Php,Mysql,如何在phpmyadmin中撤消查询执行 有任何回滚功能吗?任何人都知道解决方案,请帮助我?如果该语句仍在运行,您可以使用 如果语句已完成,但您尚未提交可以使用的事务 如果语句已完成且事务已提交(或您没有启动事务),则从最近的备份还原数据 此外,这里还有一些提示和建议,以防止这种情况首先发生: 在编写DELETE或UPDATE时,一定要先写WHERE子句,以免忘记它 在SELECT语句中测试WHERE子句,以确保您正在更新正确的行 如果您知道应该只更新一行,那么可以将限制1添加到UPDATE

如何在phpmyadmin中撤消查询执行


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

如果该语句仍在运行,您可以使用

如果语句已完成,但您尚未提交可以使用的事务

如果语句已完成且事务已提交(或您没有启动事务),则从最近的备份还原数据


此外,这里还有一些提示和建议,以防止这种情况首先发生:

  • 在编写DELETE或UPDATE时,一定要先写WHERE子句,以免忘记它
  • 在SELECT语句中测试WHERE子句,以确保您正在更新正确的行
  • 如果您知道应该只更新一行,那么可以将限制1添加到UPDATE语句中。然后,如果尽管使用了上述技术,您仍然有一个错误,那么至少只有一行会受到影响,而不是整个数据库

您可以转到
进程
页面,然后按“kill”

如果您删除了某个内容,那么我认为它不会回来,除非您有备份。我知道,在sql中,您有时可以在提交一系列sql命令之前取消回滚调用,但只能在事务中执行,而且必须先启动它们(phpMyAdmin不使用它)。

如果您已经提交了事务,恐怕无法“撤消”它。这是ACID的核心原则之一。如果您没有提交:只需执行
回滚
,就可以了


您需要从备份中恢复数据–或者,如果查询正在运行,请尝试Mark Byers建议的方法,使用
kill query

如果您需要在提交的更新之前恢复以前的数据,则可以使用update和delete触发器重构数据库,将旧数据存储在存档表中,并且当前日期/时间戳或(最好)事务id值(并确保insert始终存储当前日期/时间戳或事务id值)…有效地维护数据库每一次更改的完整历史记录。请注意,您的数据库将以惊人的速度增长…对于历史记录非常重要的任务关键型数据,这才是一个真正的解决方案,因为它需要花费大量的精力来实施,并且需要大量昂贵的磁盘空间来维护。即使如此,它也可以获得如果已对受影响的数据进行了后续更新,则可能会比较复杂;在恢复到以前的历史记录时,您可能需要“丢失”这些更新

我只能想到极少数实现这种历史记录维护的系统……例如Oracle Financials或HR

或者,有一些数据库(我曾经使用旧的DEC RDBMS)可以维护RUJs(运行单元日志)它可以用于从备份恢复到设置的时间/事务。但是MySQL不属于这一类。同样,它需要大量的磁盘空间,并且只有在您定期备份数据时才实用,而且恢复过程更复杂。MySQL(据我所知)不支持此功能


对大多数人来说,更实用的方法是从备份中进行简单的恢复,然后再进行一些手动重新创建。不幸的是,现在大多数人甚至不进行备份。

但这只会停止进一步执行,而不会撤消查询,不是吗?但是+1表示KILLingHi我已经执行了查询。它完全更新了一个字段在整个数据中。我可以以任何方式检索旧数据吗?您的意思是,停止已启动的查询,或撤消已完成(并已提交)语句所做的更改?是撤消已完成的更改