gpt4 book ai didi

mysql - 具有无效 DDL 的 Flyway 迁移(对 MySQL 5.6 有效)

转载 作者:行者123 更新时间:2023-11-29 06:08:14 24 4
gpt4 key购买 nike

我们有一个生产系统,我们使用 Flyway 进行数据库迁移。

最初它是为在 MySQL 5.5 上运行而开发的,后来我们的一些客户已经升级到 5.6,然后升级到 5.7。

MySQL 5.7 与 5.6 相比有一个变化 - 定义为 NOT NULL 的日期时间字段在 5.7 的 SQL 脚本中必须具有默认值 - 而在 5.6 中允许没有默认值。

所以我们有一个迁移在 v11 中执行此操作,但在 v2 中有一个迁移使用(现在在 5.7 中)没有默认值的非法语法。

因此,如果我们尝试在一个空的 Mysql 5.7 数据库上安装,Flyway 迁移将在第 2 步失败。

如果我们将 v2 迁移更改为具有默认值,以便 5.7 上的全新安装成功,如果我们在已迁移 v2 一次的现有安装上运行迁移,则校验和将不匹配。

处理这个问题的“干净利落”的方法是什么?

我正在考虑对 5.7 上的全新安装使用 Flyway 基线来跳过我们知道在 5.7 上会失败的步骤,然后有一个单独的引导脚本来设置架构,就像 v1 和 v2 在我们运行之前所做的那样飞路基线。

如果有更好的方法来处理这种情况并支持这两种情况,我非常想听听。

最佳答案

使用 Flyway 的 repair 命令将 5.6 DB 中的校验和与磁盘上的校验和重新对齐。

关于mysql - 具有无效 DDL 的 Flyway 迁移(对 MySQL 5.6 有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041159/

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