我不确定这是否可行,但我试图通过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的工作是进行图式演变。 –