Laravel Sail无法启动MySQL:版本降级不兼容问题求助
解决Laravel Sail MySQL版本冲突导致容器无法启动的问题
错误提示[InnoDB] Cannot boot server version 80032 on data directory built by version 80039. Downgrade is not supported的核心原因:你的项目之前使用过更高版本(8.0.39)的MySQL容器创建了数据存储卷,现在Sail默认启动的是8.0.32版本的MySQL容器,而InnoDB不支持从高版本数据目录降级启动低版本服务。
方案1:无需保留现有数据(本地开发环境首选)
- 停止所有Sail容器并彻底移除关联的数据卷(此操作会删除现有数据库数据):
vendor/bin/sail down -v - 重新构建并启动容器:
vendor/bin/sail up --build - 容器启动后,运行数据库迁移初始化数据:
vendor/bin/sail artisan migrate
方案2:需要保留现有数据库数据
- 备份现有数据
- 执行以下命令列出所有Docker卷,找到名称类似
[项目目录名]_mysql的目标卷:docker volume ls - 使用高版本MySQL容器导出数据(替换
[卷名]、[数据库密码]、[数据库名]为实际值):docker run --rm -v [卷名]:/var/lib/mysql -v $(pwd):/backup mysql:8.0.39 mysqldump -u root -p[数据库密码] [数据库名] > backup.sql
- 执行以下命令列出所有Docker卷,找到名称类似
- 移除旧数据卷
vendor/bin/sail down -v - 修改Sail的MySQL版本为8.0.39
- 打开项目根目录的
.env文件,添加或修改配置:DB_VERSION=8.0.39
- 打开项目根目录的
- 重新启动容器并导入备份
- 启动容器:
vendor/bin/sail up --build - 导入备份的数据(替换
[数据库密码]、[数据库名]为实际值):vendor/bin/sail mysql -u root -p[数据库密码] [数据库名] < backup.sql
- 启动容器:
补充说明:Sail的MySQL容器版本完全由
.env中的DB_VERSION控制,和你本地安装的MySQL版本无关。后续启动前可检查该配置,确保与项目历史使用版本一致,避免再次出现版本冲突。
内容的提问来源于stack exchange,提问作者Udders
相关产品推荐
相关产品推荐

