2017-09-21 72 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