请先备份好数据和 my.ini 配置文件。
下载最新版本的 MySQL,本文使用的压缩包。
先使用命令卸载服务,在 【老版本的】mysql/bin 目录输入如下命令:
mysqld --remove [服务名]
默认情况下服务名为 MySQL,可以省略。
mysqld 用法说明:
Usage: mysqld [OPTIONS]
NT and Win32 specific options:
–install Install the default service (NT).
–install-manual Install the default service started manually (NT).
–install service_name Install an optional service (NT).
–install-manual service_name Install an optional service started manually (NT).
–remove Remove the default service from the service list (NT).
–remove service_name Remove the service_name from the service list (NT).
–enable-named-pipe Only to be used for the default server (NT).
–standalone Dummy option to start as a standalone server (NT).
卸载时,如果你开着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
删除服务。
在删除过程中,确保要关闭 Windows 的【服务】窗口。
解压新版本的 MySQL,将 my.ini 配置文件复制到解压目录中,根据实际情况修改数据配置路径:
basedir = D:\Program Files\mysql-5.7.18-winx64
datadir = D:\Program Files\mysql-5.7.18-winx64\data
在【新版本】的 mysql/bin 目录下面执行命令:
mysqld --install [服务名]
服务名可以省略,默认为 MySQL
安装完服务后就可以通过 net start mysql
启动,或者通过【服务】窗口启动。
启动后,原先的数据都能访问了,但是如果执行 select version();
查看版本可能会出现下面的错误:
Table ‘performance_schema.session_variables’ doesn’t exist
解决办法是执行下面的命令:
mysql_upgrade -u root -p --force
输出如下部分内容:
D:\Program Files\mysql-5.7.18-winx64\bin>mysql_upgrade -u root -p --force
Enter password:
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
然后重启 MySQL 服务,之后就没有问题了。
解决方法来自:http://stackoverflow.com/questions/31967527/table-performance-schema-session-variables-doesnt-exist
本文只是总结了使用压缩包方式升级 MySQL 可能会遇到的问题。如果遇到其他类型的问题可以通过谷歌和stackoverflow进行搜索。