在还原线上的备份时,本地的数据库会报错,提示类似于插入数据的时候,有中文的地方,出错。反复对比下来,发现是本地的版本比线上的低,本地是5.7.1x,线上的是5.7.2x,所以准备直接升级到5.7的最高版本5.7.31。
升级过程中遇到了一点问题,这里记录一下
升级步骤
-
下载安装文件
-
开始安装,安装程序会自动识别,标明这次是升级更新
-
执行到最后一步,询问是否备份并且检测数据库,这里因为少了步骤,当时也不清楚,就没有执行,而是选择下面的跳过
-
升级完成,打开数据库发现,原来的数据库少了
-
打开数据库数据目录下的err文件,发现如下报错
[Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade
- 执行mysql_upgrade -u root -p,提示如下报错,这可能因为升级版本之间有默认数据库表的字段变了,导致访问用户名等配置信息出错
cannot setup server variables
-
在数据库配置文件my.ini中的[mysqld]下面添加skip-grant-tables,然后重启数据库
-
直接执行mysql_upgrade
-
等待运行完成
-
重启数据库
-
看一下原来的数据有没有回来
-
如果没有回来,再看一下err文件,可能有如下报错
[Note] Aborted connection 3 to db: 'pay' user: 'root' host: 'localhost' (Got an error reading communication packets)
这是因为你的root@localhost权限不够,把权限全打开,再试一下。