- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定这是否可行,但我正在尝试通过 Flyway Java API 以编程方式加载保存在 SQL 文件中的迁移。我有一个 SQL 文件保存在基类路径中(现在为了简单起见)作为 V1__Initial_version.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 文件并将其用作有效迁移?
更大的图景
也许我一开始就做错了,所以我会添加我正在尝试做的事情。我正在尝试设置一个我可以在测试之间使用、核对和重建的测试数据库。 IE。 TestA 在表中输入一些东西,然后预测试函数将清理数据库并重置它,然后 TestB 将有一个干净的数据库和空表来执行它的测试。我在预测试函数中使用 flyway.clean() 和 flyway.migrate() 但它破坏了 schema_version 表以及其他所有内容,然后迁移不会从以前的基线重建。
感谢任何帮助!谢谢!
最佳答案
不确定为什么它没有接收到您的任何迁移。也许他们需要在特定目录中?您需要检查 src 代码以了解它为什么不选择您的文件进行迁移。
关于大局:
我们通常在运行构建和测试用例之前使用 flyway:migrate 迁移测试数据库。我们使用 DBUnit、Spring 测试或类似的单元测试框架,它们允许使用数据预测试数据库设置。该结构在测试期间不应更改,因此不需要数据库迁移。 Arquillian 对于运行测试之前的数据库初始化也非常有用,请参见此处 https://github.com/arquillian/arquillian-extension-persistence
编辑 1所以我创建了一个小例子
import org.flywaydb.core.Flyway;
public class TestClass {
public static void main(String args[]) {
Flyway flyway = new Flyway();
for (String location : flyway.getLocations()) {
System.out.println(location);
}
flyway.setDataSource("jdbc:h2:~/test", "sa", "");
System.out.println("Result: " + flyway.migrate());
}
}
将sql文件放入src/main/resources/db/migration
并运行。它可以很好地进行 sql 迁移。如果你想把sql放在不同的目录,使用setLocations()
classpath:db/migration
Aug 30, 2016 10:48:41 PM org.flywaydb.core.internal.util.VersionPrinter printVersion
INFO: Flyway 4.0.3 by Boxfuse
Aug 30, 2016 10:48:41 PM org.flywaydb.core.internal.dbsupport.DbSupportFactory createDbSupport
INFO: Database: jdbc:h2:~/test (H2 1.4)
Aug 30, 2016 10:48:41 PM org.flywaydb.core.internal.command.DbValidate validate
INFO: Successfully validated 1 migration (execution time 00:00.009s)
Aug 30, 2016 10:48:41 PM org.flywaydb.core.internal.command.DbMigrate migrate
INFO: Current version of schema "PUBLIC": << Empty Schema >>
Aug 30, 2016 10:48:41 PM org.flywaydb.core.internal.command.DbMigrate applyMigration
INFO: Migrating schema "PUBLIC" to version 1.1 - Initial version
Result: 1
Aug 30, 2016 10:48:41 PM org.flywaydb.core.internal.command.DbMigrate logSummary
INFO: Successfully applied 1 migration to schema "PUBLIC" (execution time 00:00.024s).
关于java - 在 Flyway Java API 中使用 SQL 迁移文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39235930/
是 Flyway适合在支持多个数据库的应用程序中实现吗? 我们不知道我们的客户在使用什么——可能是 MySQL、Postgres 或 Oracle。我们还可以使用 Flyway 为新版本的应用程序迁移
只想知道正在使用 flyway 的人是否得到了这个 > 版本设置为 0。 它突然开始出现在我的元数据表上,我不确定它从哪里来,也不知道如何运行 mugrates 而不会再次出现 最佳答案 这意味着 f
大家好! :) 我一直在看 Flyway,但我不确定如何使用它。就我而言,我有一个实体模型(使用 JPA 进行注释),对我而言,每次调用“迁移”并生成迁移文件时,FlyWay 都可以找出模型上的更改,
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
场景:我有两个数据库。 第一个数据库是用于测试的空白数据库。我基本上运行 flyway:migrate 并使用完整的模式构建数据库,然后针对该空白数据库运行我的集成测试。在运行测试之前插入集成测试所需
我刚刚遇到了以下情况: 测试服务器当前正在运行 Flyway,版本为 1 (V1)。每当在 develop 分支上推送任何内容时,测试服务器都会自动更新(包括 Flyway 脚本)。 开发人员决定开始
我有一个项目,其数据库由 Flyway 在严格验证模式下管理。 我的迁移文件如下所示: V1.0__init.sql V11.0__even_better.sql V2.0__update.sql V
我们从项目开始就没有使用过 Flyway。我们处于先进的发展状态。专家评审建议在我们的项目中使用 Flyway。 问题是我们也将部分服务(微服务)移到了另一个测试环境中。 正确实现 Flyway 的最
我正在评估在我的项目中使用的 Flyway。我们当前的 SQL 脚本包含诸如 URL 之类的占位符,这些占位符将根据环境(dev、qa、prod)具有不同的域名。 具体来说,我们可能有 INSERT
我有一个名为V1_7__a_and_c.sql的flyway迁移脚本,但我意识到它不是关于“a”和“c”,而是关于“a”和“b”,所以该文件的正确名称实际上是 V1_7__a_and_b.sql。 我
我已将产品交付给客户。现在我已经升级了产品,其中包括对数据库的更改。 客户想要升级产品。现在 Flyway 将帮助客户数据从旧版本迁移到新版本。如果这是一个有效的用例,请告诉我。 flyway 文档仅
flyway 是否支持每个环境有条件地执行脚本? 例如,如果我有测试数据,是否可以创建一个仅在 env 配置为测试时加载的测试数据脚本文件夹? 最佳答案 对于 future 的访问者,这是针对特定于数
如果 flyway 在运行时最终会执行任何迁移,我们的部署系统想知道,因为它需要执行一组不同于没有数据库迁移的操作(如果有迁移,那么集群中的所有服务器都被关闭,然后一台服务器启动并执行迁移,然后将其余
我遇到以下问题: org.flywaydb.core.api.FlywayException: Validate failed: Detected applied migration not reso
我一直在阅读一篇关于 Flyway 的博客文章,名为 Lessons Learned Using Flyway DB with Distributed Version Control .作者的建议之一
因此,由于某些要求,我在升级 flyway 版本后了解到,flyway-core-2.2 为 Flyway 占位符引入了一些验证。 现在,占位符语法的约定在大多数库中都是 ${name} 统一的。在我
因此,只是探索使用 flyway 使用 Athena 提供的 JDBC 驱动程序针对 Amazon Athena 维护我的 DDL 语句的可能性,Athena 仅支持 CREATE 语句(hive D
我已经成功配置了 spring boot 和一个可以工作的新项目带飞路 使用 Postgres 数据库从 0001.0 版本迁移到 0008.0 我已经在本地手动更改了脚本但是flyway 迁移失败。
我目前正在使用 Flyway 命令行工具来管理我们的脚本,这些脚本将通过我们的 CI 构建服务器触发的发布过程来调用。 问题是我有 274 个可重复的迁移,涵盖包规范、包主体、函数、过程、 View
在 Flyway 中,我无法使用定义精确有序的迁移脚本集的文件(类似于 Liquibase approach )。 除了实现我自己的 MigrationResolver 之外,还有其他方法吗? 最佳答
我是一名优秀的程序员,十分优秀!