云数据库 MySQL 版
检查项 | 描述 | 级别 | 问题、影响及修复方法 |
检查项 | 描述 | 级别 | 问题、影响及修复方法 |
defaultCollationForUTF8MB4Check | 检查默认排序规则:升级后参数 default_collation_for_utf8mb4 默认修改为 utf8mb4_general_ci,评估其在 MySQL 8.0 中的执行安全性。 | Warning |
|
fullTextIndexCheck | 检查全局索引中是否存在 FTS_0 前缀。 | Error | 问题:当前实例中存在以FTS_0 为前缀的索引 影响:内部依赖前缀,会导致升级任务异常 修复:查询操作以 fts_0 or FTS_0,删除或者修改全局索引。 SELECT * FROM information_schema.tables WHERE table_name LIKE 'fts_0%'; |
expiredEventCheck | 检查当前实例事件与触发器状态。 | Error |
|
initConnectCheck | 检查 init_connect 参数:检测是否配置了连接初始化 SQL 语句,评估其在 MySQL 8.0 中的执行安全性。 | Error/Warning |
|
instanceDBEngineCheck | 检查非 InnoDB 引擎的业务表:识别 MyISAM、MEMORY 等非 InnoDB 引擎的业务表,需转换引擎或评估兼容性。 | Error |
|
instanceHealthCheck | 检查实例健康情况:获取实例运行情况,确认是否符合升级要求。 | Error |
|
instanceSlaveStateCheck | 检查备节点状态:检测主从复制中的备节点是否同步正常,避免升级导致数据不一致。 | Error |
|
instanceStatusCheck | 检查实例状态:验证 MySQL 实例的运行状态(如服务是否正常启动、连接性是否稳定)。 | Error |
|
InstanceSyncDelayCheck | 检查实例延迟情况。 | Warning | 问题:主从同步延迟不满足条件。 影响:升级周期变长。 |
instanceTDEOrSSLCheck | 检查实例 TDE 和 SSL 使用情况。 | Error | 问题:实例开启 TDE/SSL 能力,不支持升级。 |
mysqlShellCheck | 检查 MySQL Shell 工具:验证 MySQL 8.0 命令行工具(MySQL Shell)的安装及兼容性,确保可执行升级操作。 | Error |
|
removedSysVars | 检查系统参数变更:验证参数是否被废弃(如 query_cache_size)。 | Warning |
|
sequenceEngineCheck | 检查自研功能使用:识别是否使用 MySQL 5.7 自研的 SEQUENCE 能力(该能力在升级后无法兼容)。 | Error |
|
statementOutlineChecker | 将 Statement Outline 升级至 MySQL 8.0 兼容的 SQL 指纹格式。 | Warning |
|
sysVarsNewDefaults | 检查新默认值的系统参数:检测是否显式覆盖了 MySQL 8.0 中默认值变更的变量(如 innodb_flush_neighbors 默认从 1 改为 0)。 | Notice |
|
databaseNumberCheck | 限制本地盘实例库数量:为防止元数据管理性能问题,单实例库总数超过阈值。 | Error | 问题:本地盘实例的数据库数量超过限制,限制升级。
|
tableDiscardCheck | 检查 Discarded 表:检测通过 ALTER TABLE ... DISCARD TABLESPACE 操作丢弃的表,需修复或重新导入数据文件。 | Error |
|
tableNumberCheck | 限制本地盘实例表数量:为防止元数据管理性能问题,单实例表总数超过阈值。 | Error | 问题:本地盘实例的数据库表数量超过限值,限制升级。
|
tableSpatialIndexType | 检查 Spatial 字段的 BTREE 索引:发现地理空间类型(如 GEOMETRY)字段错误使用 BTREE 索引,需改为 SPATIAL 索引。 | Error |
|
oldTemporal | 检查已弃用的时间类型:检测是否使用了 MySQL 8.0 中已废弃的时间类型(如 TIME、DATETIME 的旧格式),这些类型可能导致兼容性问题。 | Error |
|
routineSyntax | 检查存储过程类对象的语法兼容性:验证存储过程、函数或触发器的语法是否符合 MySQL 8.0 的新规范(例如 DEFINER 语法或变量作用域变更)。 | Error |
|
reservedKeywords | 检查数据库对象名是否与保留关键字冲突:识别表名、列名等是否使用了 MySQL 8.0 新增的保留关键字(如 CUME_DIST、JSON_TABLE),需重命名以避免语法错误。 | Error |
|
utf8mb3 | 检查 utf8mb3 字符集的使用:检测是否仍在使用 3 字节的 utf8mb3 字符集,建议替换为 utf8mb4 以支持完整的 Unicode 字符(如表情符号)。 | Warning |
|
mysqlSchema | 检查 MySQL 系统库中的表名冲突:确保用户创建的数据库对象名称不与 MySQL 8.0 新增的系统表(如 innodb_index_stats)重名。 | Error |
|
nonNativePartitioning | 检查使用非原生分区引擎的分区表:检测分区表是否依赖非 InnoDB 引擎(如 MyISAM),MySQL 8.0 仅支持 InnoDB 作为分区表的默认引擎。 | Error |
|
foreignKeyLength | 检查外键约束名称是否超过 64 字符:外键名称长度在 MySQL 8.0 中限制为 64 字符,超长的名称需修改以避免元数据错误。 | Error |
|
maxdbSqlModeFlags | 检查已废弃的 MAXDB SQL_MODE 模式:检测是否启用了 MAXDB 兼容模式,该模式在 8.0 中已移除,需调整相关 SQL 逻辑。 | Warning |
|
obsoleteSqlModeFlags | 检查已废弃的 SQL_MODE 模式:识别使用了 MySQL 8.0 中已删除的 SQL 模式(如 NO_FIELD_OPTIONS),需更新配置以避免意外行为。 | Warning |
|
enumSetElementLength | 检查 ENUM/SET 列元素长度是否超限:确保 ENUM 或 SET 类型的元素值不超过 255 字符,否则会导致数据截断或创建失败。 | Error |
|
partitionedTablesInSharedTablespaces | 检查共享表空间中的分区表:检测分区表是否存储在共享表空间(如 ibdata1),MySQL 8.0 要求分区表使用独立表空间。 | Error |
|
circularDirectory | 检查表空间路径中的循环目录引用:验证表空间文件路径是否包含循环符号(如 .. 或 .),可能导致文件访问错误。 | Error |
|
removedFunctions | 检查已移除的函数:识别使用了 MySQL 8.0 中已删除的函数(如 ENCRYPT () 或 IS_OLD_PASSWORD ()),需替换为等效的新函数。 | Error |
|
groupbyAscSyntax | 检查 GROUP BY 子句的 ASC/DESC 语法:检测是否依赖 GROUP BY col ASC/DESC 的隐式排序行为,需改为显式 ORDER BY。 | Error |
|
sysVars | 检查系统变量的废弃 / 删除 / 默认值变更:验证配置的系统变量是否在 8.0 中被废弃、删除或默认值变更(如 innodb_file_format)。 | Error |
|
zeroDates | 检查零值日期时间:检测是否存在 0000-00-00 等非法日期时间值,需修复或关闭 NO_ZERO_DATE 模式。 | Warning |
|
schemaInconsistency | 检查因文件删除或损坏导致的元数据不一致:验证表定义文件(.frm)与存储引擎数据是否一致,避免升级时元数据错误。 | Error |
|
engineMixup | 检查引擎归属冲突的表:检测 InnoDB 引擎是否错误地管理了其他引擎(如 MyISAM)的表,需修复引擎定义。 | Error |
|
checkTableCommand | 检查 CHECK TABLE 命令报告的问题:确保所有表通过 CHECK TABLE 验证,未报告损坏或索引错误。 | Warning |
|
changedFunctionsInGeneratedColumns | 检查语义变更的函数索引:检测函数索引是否依赖旧版行为(如表达式长度限制),需重新评估其有效性。 | Warning |
|
columnsWhichCannotHaveDefaults | 检查不允许默认值的列:识别 BLOB、TEXT 等不支持默认值的列定义,需调整表结构。 | Error |
|
invalid57Names | 检查无效的表名或库名:检测是否包含特殊字符(如 / 或 .)的命名,需重命名以满足 8.0 命名规范。 | Error |
|
orphanedObjects | 检查孤立的存储过程或事件:识别因依赖对象删除导致的无效存储过程或事件,需清理或重新定义。 | Error |
|
dollarSignName | 检查对象名中的单美元符号:检测是否在对象名中使用($)符号(如 $event),需改为其他命名格式。 | Warning |
|
indexTooLarge | 检查超大的无效索引:验证索引长度是否超过 3072 字节(InnoDB 限制),需缩短索引或使用前缀索引。 | Error |
|
emptyDotTableSyntax | 检查例程中已弃用的表名前缀语法:检测存储过程是否使用 .<table> 格式引用表(如 db.table),需改为标准格式。 | Error |
|
invalidEngineForeignKey | 检查跨引擎的外键:识别外键关联不同存储引擎的表(如 InnoDB 引用 MyISAM 表),需统一引擎。 | Error |
|
authMethodUsage | 检查已废弃或无效的用户认证方法:检测是否使用旧版密码哈希(如 mysql_old_password),需升级为 caching_sha2_password。 | Warning |
|
pluginUsage | 检查已废弃或移除的插件:识别是否加载了已废弃的插件(如 partition 或 innodb_plugin),需禁用或替换。 | Warning |
|
deprecatedDefaultAuth | 检查系统变量中的默认认证方法:验证 default_authentication_plugin 是否设置为无效值(如 mysql_native_password)。 | Warning |
|
deprecatedRouterAuthMethod | 检查 MySQL Router 内部账户的认证方法:确保 Router 使用的内部账户未依赖旧版认证协议。 | Warning |
|
deprecatedTemporalDelimiter | 检查表分区中的废弃时间分隔符:检测分区定义是否使用冒号(如 1990:01),需改用标准日期格式。 | Error |
|
invalidUTF8MB3Character | 检查无效的 utf8mb3 字符:检测数据库中是否有无效的 utf8mb3 字符。 | Error |
|