关键词

MySQL: mysql is not running but lock exists 的解决方法

问题描述:

在使用MySQL时,可能会遇到“mysql is not running but lock exists”的错误提示。这种情况下无法启动MySQL服务。

解决方法:

  1. 查看MySQL进程

在终端中输入命令:

ps -ef | grep mysql

如果存在类似以下输出结果,则表示MySQL进程正在运行中:

mysql    8880     1  0 21:32 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/myapp.pid
mysql    9121  8880  0 21:32 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/myapp.err --pid-file=/var/lib/mysql/myapp.pid --socket=/var/lib/mysql/mysql.sock

如果没有显示任何结果,表示该服务未启动。

  1. 删除.lock文件

在MySQL守护进程未正常退出而导致MySQL持有.lock文件的情况下,可以通过删除该文件,来解决启动MySQL失败的问题:

sudo rm /var/lib/mysql/*.lock
  1. 重启MySQL服务

执行以下命令重启MySQL服务:

sudo systemctl restart mysqld

也可以尝试使用以下命令来启动MySQL服务:

sudo mysqld_safe --skip-grant-tables &
  1. 调整MySQL配置文件

如果以上方法都无法解决问题,则可以考虑调整MySQL的配置文件my.cnf:

sudo vim /etc/my.cnf

在该文件中加入以下内容:

[mysqld]
innodb_force_recovery = 1

保存后重启MySQL服务。

示例说明:

示例1:

在运行MySQL服务时,提示“mysql is not running but lock exists”的错误。经过上述步骤,发现是由于MySQL守护进程异常,导致MySQL持有了.lock文件。通过删除该文件和重启MySQL服务,成功解决了问题。

示例2:

在进行MySQL备份时,由于备份进程异常导致MySQL服务异常退出。之后尝试启动MySQL服务时,提示“mysql is not running but lock exists”的错误。通过调整MySQL的配置文件my.cnf,将innodb_force_recovery参数设置为1,成功启动了MySQL服务,并修复了数据库文件的错误。

本文链接:http://task.lmcjl.com/news/18104.html

展开阅读全文