MySQL 8.4 Reference Manual  /  Upgrading MySQL  /  Upgrade Troubleshooting

3.13 升级故障排除

  • MySQL 8.3实例中的架构不匹配,可能会导致MySQL 8.4升级失败。这种不匹配可能是由于.frm文件损坏。要解决这个问题,请在升级前将受影响的表dump和恢复。

  • 如果出现问题,例如新mysqld服务器无法启动,验证您是否有旧的my.cnf文件来自之前的安装。您可以使用--print-defaults选项(例如mysqld --print-defaults)。如果该命令显示除程序名称外的内容,您有活动的my.cnf文件,该文件影响服务器或客户端操作。

  • 如果在升级后,您遇到编译客户端程序的问题,例如Commands out of sync或意外的核心崩溃,您可能使用了旧的头文件或库文件编译您的程序。在这种情况下,请检查mysql.h文件和libmysqlclient.a库的日期,以确保它们来自新的MySQL分布。如果不是,请重新编译您的程序使用新的头文件和库。重新编译可能还需要对使用共享客户端库的程序,如果库的主要版本号已更改(例如从libmysqlclient.so.20libmysqlclient.so.21)。

  • 如果您创建了一个具有给定名称的可加载函数,并且升级到实现了新built-in函数的同名的MySQL版本,该可加载函数将变得不可访问。要解决这个问题,请使用DROP FUNCTION删除可加载函数,然后使用CREATE FUNCTION重新创建可加载函数使用不同的非冲突名称。类似地,如果新版本的MySQL实现了同名的built-in函数,可以使用Section 11.2.5, “函数名称解析和Resolution”了解服务器如何解释不同类型函数的引用。

  • 如果升级到MySQL 8.4由于任何在Section 3.6, “Preparing Your Installation for Upgrade”中列出的问题失败,服务器将回退到数据目录的所有更改。在这种情况下,请删除所有redo日志文件,然后在现有数据目录上重新启动MySQL 8.3服务器以解决错误。redo日志文件(ib_logfile*)默认位于MySQL数据目录中。解决错误后,请执行慢速关闭(通过设置innodb_fast_shutdown=0)然后再次尝试升级。