Windows Mysql 从5.5.6升级至5.7.26的详细步骤以及期间遇到的问题和解决方案

Windows Mysql 从5.5.6升级至5.7.26的详细步骤以及期间遇到的问题和解决方案

第一次写博客,主要事项记录一下自己在升级nginx和mysql中遇到的问题,之前从没有升级过也不知道怎么操作,期间看了很多的博文,自己动手操作了还是遇到了很多问题,尤其是遇到一些在看的博客中没有出现的情况就挺慌张的,毕竟数据太重要了!要是没了只能跑路了!哈哈哈~~~
下面是这过程中我遇到坑和填坑办法~~~~

要是有写的不对的地方,欢迎指出,谢谢?
nginx升级很简单,详情戳?:
https://blog.csdn.net/u010178308/article/details/84901001

Mysql 升级具体步骤

1) 先下载mysql5.7.26(新版本)的zip文件,在mysql官网中进行下载https://dev.mysql.com/downloads/mysql/

2) 解压新版本 停止现有的mysql服务,使用net stop mysql命令,或打开服务找到Mysql服务并暂停

3)备份老版本(5.5.6)安装目录下的所有文件

data文件夹中存放的都是本地数据库的数据,十分重要;my.ini是数据库的配置文件,数据库初始化时会加载此文件,若是文件错误则会出错启动不了

4)进入老版本安装目录的bin目录下,(D:\mysql\bin)使用 mysqld --remove[服务名] 命令卸载现有的服务

通常情况下服务名为Mysql,可以省略。

卸载时,如果你开着Windows的【服务】,就先关闭服务窗口。如果后面操作时提示没有卸载干净,可以使用下面的命令删除服务。

使用 sc query mysql 命令查看一下名为mysql的服务。

    SERVICE_NAME: mysql
            TYPE               : 10  WIN32_OWN_PROCESS
            STATE              : 4  RUNNING
                                    (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x0
            WAIT_HINT          : 0x0

如果存在就使用 sc delete mysql 删除服务。

删除方法来自:http://www.bkjia.com/Mysql/1162670.html

在删除过程中,确保要关闭 Windows 的【服务】窗口。

在这里插入图片描述

5)解压新版本的 MySQL,将 老版本的my.ini 配置文件和data文件夹复制到解压目录中(升级之后原来的数据都在),根据实际情况修改数据配置路径:

basedir = D:\Program Files\mysql-5.7.18-winx64
datadir = D:\Program Files\mysql-5.7.18-winx64\data

之前配置过环境变量的需要先修改环境变量path中的文件目录(若直接把新版本中所有文件都拷贝到老版本的安装目录下,则忽略此步骤)
在这里插入图片描述

6)在【新版本】的 mysql/bin 目录下面执行命令:

注意⚠️:以下命令操作之前需要关闭之前的cmd窗口,重新使用管理员权限打开再install,否则会出现重新安装后还是老版本。

mysqld --install [服务名]
服务名可以省略,默认为 MySQL

安装完服务后就可以通过 net start mysql 启动,或者通过【服务】窗口启动。

mysql 成功启动后运行 mysql_upgrade -u root -p —force命令来更新数据表结构。

升级中遇到的问题及解决方案

1,安装新版本时出现"msvcr120.dll”和"msvcp120.dll"文件丢失问题

在这里插入图片描述
解决方法:
找到并下载"msvcr120.dll”和"msvcp120.dll"文件放到计算机中就可以。或者下载并安装vc_redist (这个是vc++软件,上面缺少的两个文件就是这里面的类库文件),下面是dll文件和vc_redist 64位的下载链接,也可在Microsoft官网中下载

链接: https://pan.baidu.com/s/14SW_9gBbw_loQyBDx9JM2w 提取码: 31s5

2,安装之后启动mysql出现,服务正在启动,mysql服务无法启动,服务器没有报告任何错误。请键入NET HELPMSG 3534已获得更多帮助。

在这里插入图片描述
解决方法:

1)进入mysql的安装目录,默认在 C:Program\FilesMySQLMySQL Server 5.7\bin (刚才自己解压后的目录)

2)输入 mysqld --console用来初始化时出现的错误

在这里插入图片描述
可以看到错误是因为my.ini文件中的thread_concurrency参数错误的问题。因为我直接copy了5.5的配置文件而这个参数在5.6.1之后就被废弃了,因此只需要注释即可。

在次运行mysqld —console,又有了几个新的错误

在这里插入图片描述
显示端口被占用
cmd输入命令 netstat -aon|findstr “3306”
在这里插入图片描述
可以看到3306端口被占用,进程ID为5264
taskkill /pid 5264 -t -f
-f 用来强制结束当前进程,然后输入 net start mysql重启服务

在这里插入图片描述

3,数据库升级成功开启tomcat时报错,mysql Table ‘performance_schema.session_variables’ doesn’t exist并且使用navicate备份也会报错

在这里插入图片描述
解决办法:
1)关闭tomcat服务

2)mysql_upgrade -u root -p —force

输入密码,然后让他自己运行,运行结束之后需要重启mysql服务。出现如下截图不要惊慌,不会影响具体数据
在这里插入图片描述
在这里插入图片描述

4,MySql查询语句报Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre异常的问题

启动项目的时候,获取一个列表的时候项目报错,内容如下:

在这里插入图片描述
但项目在我自己其他装有5.7数据库的电脑上运行没有问题,原来还是mysql版本的问题,因为我使用的是mysql 5.5的ini 文件里面没有sql_mode参数,并且在5.7以上的版本实现了对功能依赖的检测,MySql默认启用了only_full_group_by SQL模式,可以试试在Navicat里面输入查询语句

解决办法:

select @@global.sql_mode;

得到的结果如下,

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

进入MySql安装路径下,打开my.ini文件,在文件的最末尾加上

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

再重启MySql服务,发现Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre异常的问题已经解决

5,启动后,原先的数据都能访问了,但是如果执行 select version(); 查看版本可能会出现Table ‘performance_schema.session_variables’ doesn’t exist错误

解决办法:

执行下面的命令(一般数据库升级要进行此操作,用于更新数据表结构)

mysql_upgrade -u root -p --force

输入密码,然后让他自己运行,运行结束之后重启mysql服务就没问题了。

我参考的博文原链接?(感谢分享经验的大神):
https://blog.csdn.net/isea533/article/details/70941603
https://segmentfault.com/a/1190000014781074
https://www.cnblogs.com/iiwen/p/5325998.html
https://blog.csdn.net/qq_34246315/article/details/81584343


版权声明:本文为weixin_42633215原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。