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
重启即可