在Docker容器中运行MySQL时出现InnoDB锁错误求助
解决Docker容器内mysqld启动时InnoDB锁ibdata1错误(Error 11)
排查与修复步骤:
检查WSL本地MySQL进程
进入WSL终端执行:ps aux | grep mysqld如果查到运行中的mysqld进程,用以下命令终止:
sudo systemctl stop mysql # 或者直接杀进程 kill -9 <进程ID>WSL与Docker共享底层资源,本地MySQL进程会占用相同的数据文件导致锁冲突。
修复数据目录权限
容器内数据目录权限为1000(对应WSL普通用户),需确保本地挂载目录权限匹配:sudo chown -R 1000:1000 /path/to/your/.db/data替换
/path/to/your/.db/data为实际的本地数据目录路径;也可以在启动容器时添加--user 1000:1000参数,强制容器进程使用对应权限用户运行。清理InnoDB残留锁文件(数据不重要时使用)
进入本地.db/data目录,删除InnoDB相关临时文件:rm -f ./ib_logfile* ./ibdata1 ./ibtmp1重新启动容器后,MySQL会自动重新初始化这些文件。
检查Docker卷挂载冲突
执行以下命令查看所有容器,确认是否有其他容器挂载了同一个数据目录:docker ps -a停止并删除冲突的容器,避免多个进程争抢同一数据文件。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

