-
在 MySQL 8.2 实例中,如果表的
.frm
文件和InnoDB
数据字典之间存在模式不匹配,可能会导致升级到 MySQL 8.3 失败。这种不匹配可能是由于.frm
文件损坏。要解决这个问题,在尝试升级之前,请转储和恢复受影响的表。 -
如果出现问题,例如新的 mysqld 服务器不启动,请验证您没有来自之前安装的旧
my.cnf
文件。您可以使用--print-defaults
选项来检查(例如,mysqld --print-defaults)。如果该命令显示的不是程序名称,那么您有一个活动的my.cnf
文件,它会影响服务器或客户端操作。 -
如果在升级后,您遇到编译客户端程序的问题,例如
命令不同步
或意外的核心转储,可能是您在编译程序时使用了旧的头文件或库文件。在这种情况下,请检查您的mysql.h
文件和libmysqlclient.a
库的日期,以验证它们来自新的 MySQL 发行版。如果不是,请使用新的头文件和库重新编译您的程序。如果共享客户端库的主要版本号发生了变化(例如,从libmysqlclient.so.20
到libmysqlclient.so.21
),也可能需要重新编译程序。 -
如果您创建了一个可加载函数,并且升级到 MySQL 的新版本,该版本实现了一个同名的内置函数,那么可加载函数将变得不可访问。要解决这个问题,请使用
DROP FUNCTION
删除可加载函数,然后使用CREATE FUNCTION
重新创建可加载函数,使用不同的非冲突名称。如果新版本的 MySQL 实现了一个同名的内置函数,同样适用存储函数。请参阅 第 11.2.5 节,“函数名称解析和解析”,了解服务器如何解释不同种类函数的引用。 -
如果升级到 MySQL 8.3 失败,因为 第 3.6 节,“升级前准备安装” 中所述的任何问题,服务器将撤销所有对数据目录的更改。在这种情况下,请删除所有重做日志文件,并重新启动 MySQL 8.2 服务器,以解决错误。重做日志文件 (
ib_logfile*
) 位于 MySQL 数据目录中。修复错误后,请执行慢关闭(通过设置innodb_fast_shutdown=0
),然后再次尝试升级。