我正在使用官方 MariadDB 10.7 docker 镜像,Windows 10。如果今天开始出现此错误并不断重复,请尝试一切:
- mysqlcheck -Ar
- delete docker image with all the data
- chkdsk -F
- dump and restore of table
- change MariaDB version
- different PC configs (nvme -> SSD)
在长时间阅读 MariaDB 错误跟踪器上的每个相关错误后,我在 Docker 环境中做了一项更改:
- disable WSL2, switch to Hyper-V
瞧,开始工作了。
现在,有趣的是,同事也遇到了同样的问题,但 WSL2 已经禁用,并且他的问题通过启用 WSL2 得到了解决。
所以我猜想,在更改 WSL2 和 Hyper-V 之间的操作时,会完成一些操作,但在使用图像时会被损坏,并且会使用此开关重置。
ATM 我没有时间切换回 WSL2 来确认我的假设。当我有时间时,我会更新这篇文章。
更新: 找不到容器配置的解决方案,所以我尝试了旧版本的 MariaDB docker 容器,它开始在版本 10.3.9 上工作。现在,我将使用这个版本,直到我找到更多时间去 MariaDB 的 Jira 并在那里报告错误。
使用以下 docker run 命令运行 MariaDB 10.6.3 时,我遇到了同样的问题:
docker run -d --name mariadb --restart always -e MYSQL_ROOT_PASSWORD=develop -e MYSQL_DATABASE=YourDatabaseHere -e MYSQL_USER=develop -e MYSQL_PASSWORD=develop -v C:\some-path\dev-data\mysql:/var/lib/mysql -p 3306:3306 mariadb:10.6.3
我将其范围缩小到映射卷的问题。我通过使用命名卷解决了这个问题:
docker volume create myvolume
创建卷后,我的新 docker 运行如下所示:
docker run -d --name mariadb --restart always -e MYSQL_ROOT_PASSWORD=develop -e MYSQL_DATABASE=YourDatabaseHere -e MYSQL_USER=develop -e MYSQL_PASSWORD=develop -v myvolume:/var/lib/mysql -p 3306:3306 mariadb:10.6.3