开发者社区> 问答> 正文

修复“超过锁定等待超时;尝试重新启动事务”为“卡住”的Mysql表??mysql

从脚本中,我将这样的查询发送了数千次到本地数据库:

update some_table set some_column = some_value 我忘了添加where部分,因此同一列为表中的所有行设置了相同的值,并且完成了数千次,并且对该列建立了索引,因此相应的索引可能更新了太多次。

我注意到出了点问题,因为花了太长时间,所以我杀死了脚本。从那以后,我什至重新启动了计算机,但表中有些东西卡住了,因为简单的查询需要很长时间才能运行,并且当我尝试删除相关索引时,它失败并显示以下消息:

Lock wait timeout exceeded; try restarting transaction 这是一个innodb表,因此卡住的事务可能是隐式的。如何修复此表并从中删除卡住的事务?

展开
收起
保持可爱mmm 2020-05-17 09:34:29 786 0
1 条回答
写回答
取消 提交回答
  • 我遇到了类似的问题,并通过检查正在运行的线程解决了该问题。要查看正在运行的线程,请在mysql命令行界面中使用以下命令:

    SHOW PROCESSLIST; 如果您无权访问mysql命令行界面,也可以从phpMyAdmin发送它。 这将显示具有相应ID和执行时间的线程列表,因此您可以杀死执行时间过多的线程。在phpMyAdmin中,您将有一个用于通过使用KILL停止线程的按钮,如果您使用的是命令行界面,则只需使用KILL命令后跟线程ID,如以下示例所示:

    KILL 115; 这将终止相应线程的连接。来源:stack overflow

    2020-05-17 09:36:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像