如果 MySQL 8.3 实例中表的
.frm
文件与InnoDB
数据字典之间的架构不匹配,则会导致升级到 MySQL 8.4 失败。此类不匹配可能是由于.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 节,“函数名称解析和解决方案”。如果由于 第 3.6 节,“准备安装升级” 中概述的任何问题导致升级到 MySQL 8.4 失败,则服务器会将所有更改恢复到数据目录。在这种情况下,请删除所有重做日志文件,并在现有数据目录上重新启动 MySQL 8.3 服务器以解决错误。默认情况下,重做日志文件(
ib_logfile*
)位于 MySQL 数据目录中。修复错误后,请在再次尝试升级之前执行缓慢关闭(通过设置innodb_fast_shutdown=0
)。