0

我有一个查询,我在自己的计算机上的 Mysql 工作台中执行,数据库在远程计算机上。

一段时间后,我收到了 2013 错误(查询期间与 MySQL 服务器的连接丢失),查询没有效果。后来我尝试了一些不同的查询,我总是得到:

Error Code: 1205. Lock wait timeout exceeded; try restarting transaction

这是否意味着我执行的查询(在此期间连接丢失)仍然锁定了表,如果是这样,我该如何释放表。从第一次查询到现在已经三个小时了。

1205    admin_pw    BSN-176-177-215.dial-up.dsl.siol.net:9054   admin_pw    Query   11217   Sending data    DELETE n1 FROM mm_ads_fields_values n1, mm_ads_fields_values n2
WHERE n1.id < n2.id 
AND n1.aid = n2
1206    admin_pw    BSN-176-177-215.dial-up.dsl.siol.net:9100   admin_pw    Sleep   415     
1208    admin_pw    BSN-176-177-215.dial-up.dsl.siol.net:9281   admin_pw    Query   622 Locked  ALTER IGNORE TABLE mm_ads_fields_values ADD UNIQUE KEY idx1(aid,value)
1308    admin_pw    localhost       Sleep   30      
1309    admin_pw    BSN-176-177-215.dial-up.dsl.siol.net:16938  admin_pw    Query   0       show processlist

show show processlist 的输出,得到 2013 错误的第一个查询是 ID 为 1205 的查询。

4

1 回答 1

1

好的,使用 show processlist 的输出,您可以看到 PID 1208 已锁定您的表。在沙盒中,您可以杀死一切并重新开始工作。但在现实生活中,您可能希望杀死拥有锁的 PID 并允许执行剩余的查询。使用上面的输出,您将在 MySQL 中以 root 身份执行以下语句

mysql> kill 1208;

运行它,然后查看您的其他查询是否完成。如果他们不这样做并再次锁定。重复上述过程,然后重新访问您的 SQL。

于 2013-06-19T20:22:18.577 回答