我正在尝试将数据从MySQL5.7导出到MySQL5.5服务器。我面临的问题是,5.5不支持多个ON UPDATE CURRENT_TIMESTAMP,但是5.7有多个时间戳拼贴。问题是:是否有一种方法仅禁用ON UPDATE CURRENT_TIMESTAMP im mysqldum,而不触及实际数据库。我尝试过--compatible=mysql323和--compatible=mysql40,但是这些模式引入了其他兼容性问题,比如MODE=InnoDB而不是ENGINE=InnoDB。如有任何帮助或建议,将不胜感激。
发布于 2019-06-17 21:17:04
使用5.5个版本的mysqldump创建转储。也许能行。否则可能会惹上其他麻烦。
对于TIMESTAMP列,5.5的默认设置非常有限。即使您可以关闭不兼容的语法,您也会得到一个能够工作的CREATE TABLE吗?
这可能只是冰山一角。您打算在5.5版本的服务器上做什么?也许这只是为了做分析?而且您不会执行INSERTs或UPDATEs,所以对于默认设置没有什么关系吗?
B计划:
mysqldump ... --no-data然后编辑出TIMESTAMPs的默认值,并将结果提供给mysql。表将被构建,但尚未填充。
mysqldump ... --no-create | mysql ...来加载数据。(请注意:我不确定--没有参数的拼写)
发布于 2019-06-17 17:50:31
您已经找到了转储的兼容性标志,并且它没有特定的版本。
将目标数据库升级到5.7或更高版本。如果这是不可行的,编写一个程序来进行任何必要的转换并导入它。从正在运行的数据库中提取,或转换5.7转储。
(一般来说,向前兼容任何重大变化都是困难的。通常您需要一些软件的新版本来读取新的数据结构和语法。)
https://serverfault.com/questions/971730
复制相似问题