我不確定這是否可行,但我試圖通過Flyway Java API以編程方式加載保存在SQL文件中的遷移。我(現在爲簡單起見)保存在基類路徑V1__Initial_version.sql一個簡單表的創建語句中的SQL文件:在Flyway Java API中使用SQL遷移文件
CREATE TABLE test_user (
name VARCHAR(25) NOT NULL, PRIMARY KEY(name)
);
然後在Java程序中我使用
Flyway flyway = new Flyway();
flyway.setDataSource(jdbc_url, user, password);
int migrations = flyway.migrate(); // Just to check the # of migrations applied
我看到ClassPathScanner通過類路徑查看有效的遷移,但似乎忽略了sql遷移文件。當我從命令行呼叫flyway migrate時,同樣的sql遷移文件可以正常工作。我創建了一個java類,並從JdbcMigrations類繼承而來,ClassPathScanner選擇了它。我需要做些什麼才能獲得Java ClassPathScanner拾取的.sql文件並將其用作有效的遷移?
大局觀
也許我錯誤地要對這個擺在首位,所以我會添加什麼,我試圖做的。我試圖建立一個測試數據庫,我可以使用,核武器,並在測試之間重建。 I.E. TestA在表中輸入一些東西,預測試函數會清理數據庫並重置它,然後TestB將擁有一個乾淨的數據庫和空表來執行它的測試。我在預測試函數中使用了flyway.clean()和flyway.migrate(),但它會破壞schema_version表以及其他所有內容,然後遷移不會從之前的基線重建。
任何幫助表示讚賞!謝謝!
我真的不明白的點的摧毀架構。數據,是的,但架構?我會使用DbSetup(http://dbsetup.ninja-squad.com/)。免責聲明:我是作者。 –
你說的沒錯,實際上沒有任何意義去強化模式。我試圖做的是清除數據,但使用** flyway.clear **也刪除我的模式表。我沒有看到另一種方式讓flyway清除數據,但保留表格和模式。 –
這不是Flyway的目的。 Flyway的工作是進行圖式演變。 –