mysqldump 5.7 到 5.5 的兼容性

mysqldump 5.7 到 5.5 的兼容性

我正在尝试将数据从 mysql 5.7 导出到 mysql 5.5 服务器。我面临的问题是 5.5 不支持多个ON UPDATE CURRENT_TIMESTAMP,但 5.7 有多个时间戳列。问题是:有没有办法只禁用ON UPDATE CURRENT_TIMESTAMPim mysqldum ,而不触及实际数据库。我尝试过--compatible=mysql323和,--compatible=mysql40但这些模式引入了其他兼容性问题,例如MODE=InnoDB而不是ENGINE=InnoDB。任何帮助或建议都将不胜感激。

答案1

使用 5.5 版本来mysqldump创建转储。它可能会起作用。或者可能会引发其他麻烦。

5.5 的列默认值非常有限TIMESTAMP。即使您可以关闭不兼容的语法,您也能得到一个CREATE TABLE可以正常工作的版本。

这可能只是冰山一角。您打算在 5.5 版服务器上做什么?也许只是为了进行分析?而且您不会执行INSERTsUPDATEs,所以默认值无关紧要?

计划 B:

mysqldump ... --no-data

然后编辑默认值TIMESTAMPs并将结果提供给mysql。表格将被构建,但尚未填充。

mysqldump ... --no-create | mysql ...

加载数据。(警告:我不确定 --no 参数的拼写)

答案2

您已经找到了转储的兼容性标志,但它没有特定的版本。

将目标数据库升级到 5.7 或更高版本。如果不可行,请编写一个程序来执行任何所需的转换并导入它。从正在运行的数据库中提取,或转换 5.7 转储。

(一般来说,任何重大变化的向前兼容性都很困难。通常您需要某些软件的新版本来读取新的数据结构和语法。)

相关内容