2017-09-21 58 views
0

我在Spring引导应用程序中使用H2,在生产中使用Oracle DB。 用于检查迁移文件我使用FlyWay。 不幸的是,H2与Oracle不兼容(即使设置了Oracle模式)。 所以,我无法验证我的迁移文件。 当我有H2查询时 - 在我的项目中进行验证是可以的,但是当我将它上传到生产环境时,它在Oracle上无法运行。 你有什么想法如何验证我的h2-db项目上的oracle迁移文件?Spring引导-h2和Oracle不兼容100%

+0

例如编辑列中的数据类型。在h2 sql上:'ALTER TABLE table_name ALTER COLUMN column_name数据类型;'和on oracle:'ALTER TABLE表名 MODIFY COLUMN column_name数据类型;' – michf

+0

通过使用Oracle。如果使用ANSI SQL规范中指定的内容之外的任何内容,则不同的数据库通常不兼容。 –

回答

2

Flyway FAQ覆盖该数据库特定的SQL下:

可以使用flyway.locations属性。它应该是这样的:

TEST (Derby): flyway.locations=sql/common,sql/derby 
    PROD (Oracle): flyway.locations=sql/common,sql/oracle 

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

如果差异真的未成年即只有几个关键字的另一种方法,将有不同的迁徙路线占位符关键字:

ALTER TABLE table_name ${alter_column} COLUMN column_name datatype; 

TEST (H2):  flyway.placeholders.alter_column=ALTER 
PROD (Oracle): flyway.placeholders.alter_column=MODIFY