我有一个查询,我在自己的计算机上的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的查询。
答案 0 :(得分:1)
好的,使用show processlist的输出,您可以看到PID 1208已锁定您的表。在沙盒中你可以杀死所有东西然后重新开始工作。但在现实生活中,您可能希望杀死具有锁定的PID,然后允许其余查询执行。使用上面的输出,您将在MySQL中以root身份执行以下语句
mysql> kill 1208;
运行此选项,然后查看您的其他查询是否完成。如果他们不这样做并再次锁定。重复上述过程,然后重新访问SQL。