Loading

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的数据目录全部删除。

  1. 因为我是用docker跑的,找到挂载的目录
volumes:
      - ./data/mysql_db:/var/lib/mysql

进入到docker-compose.yml文件目录

rm -rf data

再次执行docker-compose up
成功

  1. 如果你是直接安装在主机上
cd /var/lib/mysql
sudo rm -R mysql

重启即可

posted @ 2021-01-25 18:39  李帆1998  阅读(2672)  评论(0编辑  收藏  举报