我正在尝试将应用程序的数据库从 MySQL 5.7 迁移到 MySQL 8.0。但是,预检查失败并出现不兼容错误“25”,指出具有冗余行格式的表不能具有大于 767 字节的索引。错误消息还提到仅显示 50 个索引。
是否有查询或方法可以识别数据库中有问题的表?我需要找出生产环境中的哪些表可能受到此问题的影响。
我正在尝试将应用程序的数据库从 MySQL 5.7 迁移到 MySQL 8.0。但是,预检查失败并出现不兼容错误“25”,指出具有冗余行格式的表不能具有大于 767 字节的索引。错误消息还提到仅显示 50 个索引。
是否有查询或方法可以识别数据库中有问题的表?我需要找出生产环境中的哪些表可能受到此问题的影响。
您可以使用
information_schema.tables
。此查询告诉您每个数据库有多少种不同的行格式
要查看包含 的表
ROW_FORMAT=REDUNDANT
,请运行此查询如果这些是您想要的表格,您可以将它们转换为
ROW_FORMAT=Dynamic
.以下查询向您展示了将 row_format 更改为的 ALTER TABLE 命令
Dynamic
(这是历史琐事——并不是真正的答案;请参阅罗兰多的答案。)
从变更日志来看:
从 5.0.3 (2005)
直到 8.0.26 (2021),我仍然看到 Redundant 中的细微错误得到修复。