### 2.11.12 升级疑难解答 - MySQL 5.7 实例中的架构不匹配`.frm`表的文件和`InnoDB`数据字典可能导致升级到 MySQL 8.0 失败。这种不匹配可能是由于`.frm`文件损坏。要解决此问题,请在再次尝试升级之前转储并恢复受影响的表。 - 如果出现问题,例如新的[**mysqld**](mysqld.html)服务器没有启动,请确认您没有旧的`我的.cnf`以前安装的文件。您可以使用[`--打印默认值`](option-file-options.html#option_general_print-defaults)选项(例如,[**mysqld --print-defaults**](mysqld.html))。如果此命令显示程序名称以外的任何内容,则您有一个活动的`我的.cnf`影响服务器或客户端操作的文件。 - 如果在升级后遇到编译的客户端程序问题,例如`命令不同步`或意外的核心转储,您可能在编译程序时使用了旧的头文件或库文件。在这种情况下,请检查您的日期`mysql.h`文件和`libmysqlclient.a`库以验证它们是否来自新的 MySQL 发行版。如果没有,请使用新的头文件和库重新编译您的程序。如果库主要版本号已更改(例如,从`libmysqlclient.so.20`到`libmysqlclient.so.21`)。 - 如果您创建了一个给定名称的可加载函数并将 MySQL 升级到实现具有相同名称的新内置函数的版本,则可加载函数将无法访问。要更正此问题,请使用[`拖放功能`](drop-function.html)删除可加载功能,然后使用[`创建函数`](create-function.html)使用不同的非冲突名称重新创建可加载函数。如果新版本的 MySQL 实现了与现有存储函数同名的内置函数,情况也是如此。看[第 9.2.5 节,“函数名称解析和解析”](function-resolution.html),用于描述服务器如何解释对不同类型函数的引用的规则。 - 如果升级到 MySQL 8.0 由于任何问题而失败[第 2.11.5 节,“准备升级安装”](upgrade-prerequisites.html),服务器将所有更改还原到数据目录。在这种情况下,删除所有重做日志文件并在现有数据目录上重新启动 MySQL 5.7 服务器以解决错误。重做日志文件(`ib_logfile*`) 默认情况下位于 MySQL 数据目录中。修复错误后,执行慢速关机(通过设置[`innodb_fast_shutdown=0`](innodb-parameters.html#sysvar_innodb_fast_shutdown)) 在再次尝试升级之前。