mysql - 我应该遵循哪些步骤来查找 mysql 中表被锁定的根本原因?

标签 mysql

mysql 数据库中的一个表被锁定。 请让我知道我应该遵循的步骤来查找其背后的根本原因,即谁在何时锁定表?

谢谢, 萨钦

最佳答案

首先,检查表是否已锁定 - 它是否出现在结果中:

mysql> SHOW OPEN TABLES WHERE in_use;

如果当前已锁定,请从命令行运行:

# mysqladmin debug -u <user> -p 

( <user> 最有可能是 root ,具体取决于您的设置)

现在检查您的错误日志(默认情况下位于数据目录内,通过检查 my.cnf 文件找到该位置)。您应该找到执行锁定的进程的详细信息。

输出的相关位如下所示:

Current locks:
lock: 0x7f759da38e90: write
write     : 0x7f759da97a00 (54:12);

从数据库内(使用具有 SUPER 权限的用户)运行 SHOW PROCESSLIST找出日志所指的 session 。在上面的示例中,您需要进程 ID 54 (由 (54:12) 标识)。

关于mysql - 我应该遵循哪些步骤来查找 mysql 中表被锁定的根本原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660197/

相关文章:

mysql - 从 MySQL 过渡到 Elasticsearch 时处理搜索?

php - 如何从mysql中转义php中的空格和中断

mysql : select all column with limit substract one from count

java - Spring、MySQL 和 Hibernate 返回针对列 'row_id' 调整的超出范围值

mysql - 设置 CloudSQL 实例的最大连接限制

MySQL : Error Code 1114. 表已满(表甚至不存在)

mysql - 使用css排列数据库中的数据

php OOP 错误 : Call to a member function query() on null in c:blah/bla/. ./\engine\admin\cms.class.php 第 7 行

mysql - 使用 select 更新查询——它如何知道要更新哪一行

php - 构建没有项目 ID 的 URL 并获得正确的项目