一个查询锁定了MySQL中的一个表。如何终止正在运行的查询的会话以解锁表?
我不知道如何在MySQL中查看活动会话/进程。如何通过SSH进行此操作?
进入PuTTY,然后登录MySQL。在MySQL中运行以下内容:
show processlist;
这将显示所有正在运行的进程的列表。您可能能够找到锁定表的查询,因为它可能是运行时间最长的查询,还有一堆其他查询在等待锁定释放。记下此查询的进程id。
然后运行:
kill [PROCESSID];
这将扼杀这个过程。当然,您需要作为有权停止已启动查询的用户来执行此操作(因此,如果必须,请使用相同的用户或root
)。
使用MySQL控制台或其他工具运行查询SHOW PROCESSLIST
以查看活动查询。
并且运行查询kill 123
以终止id为123的查询/连接。
使用此命令使其更易于阅读:
mysql> show processlistG
然后,正如上面所说的,使用命令:
kill PROCESSID;
例如:
kill 1234;
其中1234是显示为使用最多资源/时间的ID。但要小心,因为这可能会导致数据损坏。