gpt4 book ai didi

mariadb - 如何处理以前的 Flyway 迁移在较新的数据库版本中变得无效?

转载 作者:行者123 更新时间:2023-12-04 17:37:49 30 4
gpt4 key购买 nike

所以,我有一个 Flyway 迁移,它在几年前成功地应用于旧版本的 MariaDB。

较新版本的 MariaDB 现在更加严格,并且会导致同一迁移出错。我想为从基线开始的新运行(例如在我的 CI 环境中构建,或在新的开发人员的笔记本电脑上构建)和我所有现有的数据库(在我尝试将它们升级到较新的 MariaDB 版本,可能会失败)。

什么是正确的解决方案?

  • 更改迁移,并添加一个执行相同修复的新迁移(另一个 ALTER TABLE ...),这将有效地成为新创建的数据库的空缺,但会修复我现有的东西。
  • 添加一个乱序版本的新迁移,就在损坏的版本之前,这解决了问题。希望这意味着新的数据库将在中断迁移之前应用它,并且现有安装将在我的任何新迁移之前应用它?

具体来说,问题是我正在将最初使用 ENGINE=MyISAM ROW_FORMAT=FIXED 的表迁移到 ENGINE=InnoDB -- MariaDB 10.1 接受,但较新的 MariaDB 版本似乎会失败,除非我也添加 ROW_FORMAT=DEFAULT


基线

CREATE TABLE FOO ( ... )
ENGINE=MyISAM ROW_FORMAT=FIXED;

后期迁移

ALTER TABLE FOO
ENGINE=InnoDB;

后一个语句在较新的 MariaDB 版本上失败(并且可能也适用于 MySQL,不确定?)。

虽然这个声明有效:

ALTER TABLE FOO
ENGINE=InnoDB ROW_FORMAT=DEFAULT;

问题是前面的语句在内部尝试做这样的事情,但失败了:

CREATE TABLE FOO ( ... )
ENGINE=InnoDB ROW_FORMAT=FIXED;

最佳答案

处理此问题的最佳方法可能是仔细修改迁移并发出 flyway 修复 以将数据库中的校验和与磁盘上的新校验和重新对齐。

关于mariadb - 如何处理以前的 Flyway 迁移在较新的数据库版本中变得无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55928783/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com