SpringBoot Flyway - sql 补丁的更多阶段(运行 非破坏和破坏 sql 补丁分开)
SpringBoot Flyway - More phases of sql patches (running non-breaking and breaking sql patches separately)
是否可以 运行 在“2 个阶段”中使用 flyway 进行迁移?
问题是我需要在不中断的情况下部署到生产服务器,SQL 迁移是个问题。
虽然我可以写每个(不是每个 SQL 补丁都会破坏所以大部分补丁)SQL 补丁 2 次 - 一次没有破坏性变化(没有列删除等)和一次有重大改变。
所以我的问题是 Flyway 是否可行。
我想像 migrations:migrate --type=non-breaking
和 migrations:migrate --type=breaking
我的 SQL 补丁将这样命名:
V1_loremIpsum.non-breaking.sql
V1_loremIpsum.breaking.sql
同时调用 V1__...
的两个迁移将不起作用,因为需要有明确的排序,因此您需要重命名其中一个。如果打算 运行 所有非破坏性更改,然后执行其他操作,例如应用程序更新,然后 运行 破坏性更改一旦确认应用程序已启动并稳定,请使用 target
选项:
V1__loremipsum-nonbreaking-do-these-first.sql
V1_0_1__loremipsum-breaking.sql
/* Only migrates the non-breaking changes */
migrations:migrate --target=1
/* Migrates all - safe to call whether the above has been called or not */
migrations:migrate [--target=latest]
是否可以 运行 在“2 个阶段”中使用 flyway 进行迁移?
问题是我需要在不中断的情况下部署到生产服务器,SQL 迁移是个问题。
虽然我可以写每个(不是每个 SQL 补丁都会破坏所以大部分补丁)SQL 补丁 2 次 - 一次没有破坏性变化(没有列删除等)和一次有重大改变。
所以我的问题是 Flyway 是否可行。
我想像 migrations:migrate --type=non-breaking
和 migrations:migrate --type=breaking
我的 SQL 补丁将这样命名:
V1_loremIpsum.non-breaking.sql
V1_loremIpsum.breaking.sql
同时调用 V1__...
的两个迁移将不起作用,因为需要有明确的排序,因此您需要重命名其中一个。如果打算 运行 所有非破坏性更改,然后执行其他操作,例如应用程序更新,然后 运行 破坏性更改一旦确认应用程序已启动并稳定,请使用 target
选项:
V1__loremipsum-nonbreaking-do-these-first.sql
V1_0_1__loremipsum-breaking.sql
/* Only migrates the non-breaking changes */
migrations:migrate --target=1
/* Migrates all - safe to call whether the above has been called or not */
migrations:migrate [--target=latest]