对于迁飞“数据库中的特定” SQL脚本的最佳方法(Best way for “database sp

2019-07-04 05:33发布

我开始使用Flyway在我的数据库迁移当前的项目,我非常喜欢它。 我目前在测试环境使用Oracle在PROD-和德比。

很快,我在数据库特定的SQL命令,例如问题并运行

  • ALTER TABLE T1 MODIFY F1 VARCHAR(256); 在Oracle VS
  • ALTER TABLE T1 ALTER F1 SET DATA TYPE VARCHAR(256); 在德比。

我看不到的方式来写一个“厂商中立的ALTER TABLE修改列数据类型” SQL。

什么是对付使用迁飞这个问题的最好方法是什么?

Answer 1:

您可以使用flyway.locations属性。

在测试中是这样的:

flyway.locations=sql/common,sql/derby

在PROD:

flyway.locations=sql/common,sql/oracle

然后,您可以有在特定的DB-位置DB特定语句(V2__Alter_table.sql)的共同和不同副本的共同声明(V1__Create_table.sql)。

一个更好的解决方案,在我看来,是具有相同的DB的督促和测试。 是的,你失去一点的表现,但在另一方面,你也消除环境中的另一个区别(和错误的潜在来源)。



Answer 2:

Oracle和一些桌面数据库之间的SQL的差异是次要的。 是否有可能为开发人员能够插入自定义代码在运行时根据环境(例如,删除表空间标识)执行SQL的一些轻量的动态剥离?

我喜欢这种方法依赖于每个开发人员手动保持两套SQL的同步。



文章来源: Best way for “database specific” sql scripts with Flyway
标签: flyway