1205错误:表经过很长时间后仍然锁定

时间:2013-06-19 20:00:45

标签: mysql deadlock mysql-error-2013 mysql-error-1205

我有一个查询,我在自己的计算机上的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的查询。

1 个答案:

答案 0 :(得分:1)

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

mysql> kill 1208;

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