InnoDB Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!
bug#
系统 Mac OS docker-compose
修改docker-compose里的mysql版本,从8.0降到5.7
InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!
原因#
之前docker已经运行了一个mysql 8.0 的容器,并且挂载到了主机目录。
原来安装的是mysql8.0版本,比现在的5.7版本要高,但在高版本数据库时创建的一些数据库数据都还在。
使用的是高版本的InnoDB引擎,而低版本的数据库服务还是指向了这些数据,但是一些版本的数据格式不同,这个时候,我们只要把高版本的数据删掉就可以了,删掉后重新启动mysql就可以了。
解决#
删除高版本数据库时创建的数据,不是仅仅删除创建的一些数据库,而是把整个mysql的数据目录全部删除。
- 因为我是用docker跑的,找到挂载的目录
volumes:
- ./data/mysql_db:/var/lib/mysql
进入到docker-compose.yml文件目录
rm -rf data
再次执行docker-compose up
成功
- 如果你是直接安装在主机上
cd /var/lib/mysql
sudo rm -R mysql
重启即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?