RDS for MySQL 5.7版本升级到8.0 检查项 检查内容 修复建议 utf8mb3Check 检查字符集utf8mb3。 MySQL 5.7中,字符集utf8等同于utf8mb3, MySQL 8.0中,字符集utf8等同于utf8mb4, 请注意升级后如果使用utf8创建表格,相当于使用字符集utf8mb4。 用户无需处理该项检查。 removedSysVars 检查已移除的系统参数。 系统参数在MySQL 8.0中已删除。 该检查项不影响升级,用户无需处理。 sysVarsNewDefaults 检查系统参数默认值变化。 系统参数在MySQL 8.0中的默认值发生变化,如果您修改过该参数的值,升级后保留修改后的值,如果未修改过,将采用新的默认值。 该检查项不影响升级,用户无需处理。 zeroDatesCheck 检查使用了零日期、日期时间和时间戳。 MySQL 8.0.16及以后版本,将零值日期(例:“20240000”)作为查询条件时,MySQL将该字符串转换为DATE,如果转换失败,该查询将报错。 该检查项不影响升级,但影响升级后的查询逻辑。用户无需处理global.sqlmode的报错,建议排查是否存在此类值,如果存在,修改为非零值。 enumSetElementLenghtCheck 检查ENUM/SET列元素长度。 元素长度大于255个字符,请修改到不超过255个字符。 reservedKeywordsCheck 检查保留字。 与MySQL 8.0中的保留字冲突,请修改名字。 mysqlDollarSignNameCheck 检查$符号。 数据库对象名包含“$”,请修改。 mysqlInvalid57NamesCheck 检查非法库名/表名/列名等。 包含非法名字,请修改。 groupByAscCheck 检查group by ASC/DESC语法。 MySQL 8.0移除了GROUP BY ASC/DESC语法,请修改数据库对象,可将ASC/DESC关键字从 GROUP BY子句中移除,并放置在适当的ORDER BY子句中。 checkTableOutput 通过"check table x for upgrade"检查表存在的问题。 根据检查结果中的“说明”进行修复。 engineMixupCheck 检查 InnoDB 识别了属于其他引擎的表的情况。 表格被 InnoDB引擎识别,但 SQL 层认为它们属于另一个引擎,请联系客服解决。 foreignKeyLengthCheck 检查外键约束名长度。 外键约束名长度不得超过64个字符,请修改。 nonNativePartitioningCheck 检查使用了非本地分区引擎的分区表的情况。 MySQL 8.0仅支持InnoDB 和 NDB作分区表引擎,请转换为InnoDB引擎,或删除其分区。 routinesSyntaxCheck 检查语法不兼容的情况。 存储过程、函数等数据库对象的定义包含了不兼容的语法,例如与MySQL8.0中的保留字冲突,请根据检查结果中的“说明”做修改。 maxdbFlagCheck 检查是否使用了过时的 MAXDB sqlmode标志。 MySQL 8.0删除了sqlmode中的MAXDB选项,请修改sqlmode参数,不使用MAXDB。 sqlModeFlagCheck 检查是否使用了过时的sqlmode标志。 MySQL 8.0删除了部分sqlmode标志,请根据检查结果中的“说明”,修改sqlmode参数。 removedSysLogVars 检查已移除的系统日志系统参数。 MySQL 8.0移除了部分系统日志系统参数,请知悉。 用户无需处理该项检查结果。 mysqlIndexTooLargeCheck 检查索引长度。 MySQL 5.7和MySQL 8.0都支持相同长度的索引,最大索引长度为767字节,在MySQL 8.0 utf8mb4编码下,最大支持191个字符;请修改索引长度至不超过191个字符。 circularDirectoryCheck 检查表空间数据文件路径使用循环目录。 目标版本不支持表空间在数据文件路径中包含循环目录引用(例如“/../”),请联系客服处理。 columnsWhichCannotHaveDefaultsCheck 检查列默认值。 BLOB、TEXT、GEOMETRY或JSON等类型的列不允许设置默认值,请通过ALTER TABLE语句删除默认值。 removedFunctionsCheck 检查已移除的函数。 目标版本删除了部分函数,请根据检查结果中的“说明”,修改相应数据库对象。 mysqlOrphanedRoutinesCheck 检查孤立的存储过程或函数等。 孤立的存储过程或函数等指其引用的数据库对象已不存在,无法运行,请删除。 mysqlEmptyDotTableSyntaxCheck 检查废弃的标识符。 请根据检查结果中的“说明”,修改对应数据库对象中的标识符。 mysqlSchemaCheck 检查表名冲突。 MySQL8.0新增部分表,请通过RENAME TABLE语句修改存在冲突的表名。 mysqlInvalidEngineForeignKeyCheck 检查外键约束指向其他引擎的表。 请通过ALTER TABLE语句修改引擎,或删除外键引用。 lowerCaseNameCheck 检查参数lowercasetablenames1时,是否存在大写表名 参数lowercasetablenames1时,如果存在大写表名,将导致升级失败;请先修改lowercasetablenames0,通过RENAME TABLE语句将检查结果中的大写表名修改为小写,再将lowercasetablenames的值修改回1。 specVarInConfigFileCheck 检查配置文件中 sqlmode、loosetlsversion 是否有过时的值。 目标版本移除了部分sqlmode标志,MySQL8.0.28及其以上,loosetlsversion参数不支持TLSv1和TLSv1.1,请根据检查结果修改sqlmode或loosetlsversion参数的值。 reversedUserCheck 检查是否创建了创建 mysql.infoschema@localhost。 MySQL8.0内置mysql.infoschema@localhost账号,如MySQL5.7存在此账号,将导致升级失败,升级前请删除该账号。 schemaInconsistencyCheck 检查表文件移除或损坏导致的数据库结构不一致问题。 表文件.frm缺失,请联系客服申请处理。 geometryIndexCheck 检查空间坐标作为索引时是否为空间索引。 目标版本中,空间坐标作索引时必须为空间索引,请重建索引或删除索引。 danglingIndexCheck 检查是否存在空悬索引。 全文索引列删除导致FTSDOCID空悬的表,需要进行 OPTIMIZE TABLE修复。 viewColumnCheck 检查视图列名长度。 目标版本中视图列名长度不可超过64个字符,请通过ALTER VIEW语句修改列名。 partitionedTablesInSharedTablespaceCheck 检查分区表是否在共享表空间。 目标版本不支持共享表空间,请通过ALTER TABLE语句将它们移动到独立表空间。 partitionsReferencedCheck 检查分区表是否被普通表通过外键引用。 分区表不可被普通表引用,请删除外键引用。 partitionsRangeDateCheck 检查按时间分区的分区表。 MySQL 8.0按时间分区时,时间列内容要求是标准的格式(例如:'YYYYMMDD hh:mm:ss' 或 'YYMMDD hh:mm:ss'),并修改相应表中时间数值为标准格式。