mysql连接服务器时,出现这个问题:3680 - Failed to create schema directory 'xxxx' (errno: 28 - No space left on device)
第一步:诊断问题类型
检查磁盘空间
运行以下命令:
bash
df -h # 查看磁盘使用情况
如果输出中 Use% 接近 100%,说明磁盘空间不足。
检查 inode 使用
运行:
bash
df -i # 查看 inode 使用情况
如果 IUse% 接近 100%,说明文件索引(inode)耗尽(常见于大量小文件)。
排查出3680 - Failed to create schema directory 'manhour management' (errno: 28 - No space left on device) 的直接原因是:
根分区 / 磁盘空间完全耗尽,导致系统无法创建新目录(即使 inode 充足)。
解决办法:
# 1. 删除所有容器日志(主要空间占用源)
sudo find /var/lib/docker/containers -name "*.log" -exec rm -f {} \;
# 2. 清理 Docker build 缓存
docker builder prune -af
# 3. 清理 overlay2 临时文件(安全操作)
sudo find /var/lib/docker/overlay2 -name "tmp" -type d -exec rm -rf {} +
# 4.在停掉一个其他的容器,就释放出来了docker stop 容器id
解决完上面问题,导入数据库数据不对,删除数据库出现一个新的问题:1192 - Can't execute the given command because you have active locked tables or an active transaction
解决办法:
1、查看镜像 docker images
2、删除mysql镜像 docker rmi -f 镜像id
3、拉取新的mysql镜像 docker pull mysql:8.0
拉取成功之后,run mysql
docker run -d --name mysql-servers --restart always -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_USER=rootname -e MYSQL_PASSWORD=1234 -e MYSQL_DATABASE=your_database -e MYSQL_ROOT_HOST='%' -p 3306:3306 mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
以上为mysql运行成功。
注意:项目容器需重新跑一下。
以上为项目使用过程中出现的问题,请参考!!!