MySQL 9.0 参考手册  /  升级 MySQL  /  升级故障排除

3.13 升级故障排除

  • MySQL 8.4 实例中表 .frm 文件与 InnoDB 数据字典之间存在的架构不匹配可能会导致升级到 MySQL 9.0 失败。这种不匹配可能是由于 .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 9.0 失败,则服务器将恢复对数据目录的所有更改。在这种情况下,请删除所有重做日志文件,然后在现有数据目录上重新启动 MySQL 8.4 服务器以解决错误。重做日志文件 (ib_logfile*) 默认情况下位于 MySQL 数据目录中。在解决错误后,请执行缓慢关闭(通过设置 innodb_fast_shutdown=0),然后再尝试升级。