问题标签 [flyway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5481 浏览

database - 生产数据库中的 Flyway 集成

我们有一个生产中的数据库,它在“用户”表中已经有很多行。考虑flyway网站上的以下声明:

如果您有一个尚未被 Flyway 填充的现有数据库,那么您可以这样做:

  • 创建一个初始迁移脚本,该脚本将重新创建您的当前状态并为其提供低版本号。
  • 使用 flyway:init 创建元数据表并将此脚本设置为当前版本。

我想使用 flyway 来管理我的架构和数据库中的各种常量,但我不希望 V1__Base_version.sql 包含我们当前生产用户的帐户信息,特别是考虑到它存储在 SCM 中。如果我正确理解了这些说明,我需要能够使用 V1__Base_version.sql “重新创建 [我的] 当前状态”。

那么仅使用架构和常量创建初始迁移可以正常工作吗?还是我们工作站上的数据库需要 100% 匹配生产中的数据库?

0 投票
6 回答
37247 浏览

maven - 我可以使用 maven pom.xml 中的属性文件进行飞行路径配置吗

我不想在这里提及驱动程序、url 和用户。我已经开了abc.property一个src/main/resources。如何在这里使用该文件?

0 投票
2 回答
419 浏览

flyway - Flyway-1.7:处理分支的解决方法?(Flyway 问题 138)

Flyway是一个非常好的自动化数据库更新(也称为迁移)的工具。但是,从 1.7 版开始,它依赖于完全线性的迁移序列。如果您有一个生产系统,当您已经在开发新东西时,您必须为其提供修复程序,那么这个假设将立即无效。常见问题解答正确地认为这对生产系统本身来说不是问题,但是如果您已经在开发分支上拥有开发和/或 QA 系统,则需要从带外生产版本的修复程序中运行迁移.

允许此问题的解决方案正在等待Issue 138,但尚未完成。因为这几乎是一个致命的问题:如果我现在想使用它,有什么聪明的解决方法吗?

0 投票
2 回答
3282 浏览

version-control - Flyway - 支持同时版本/多个分支

有谁知道允许大型项目(有许多工程师并行工作)使用Flyway处理版本控制的好方法?我们经常发现,在合并到 master 期间,我们最终会因为 2-3 个独立项目需要更改数据库,并且使用相同的版本号而导致合并冲突。

在这种情况下,我什至不确定 Rails 样式的版本控制时间戳是否有效,因为您不一定知道合并到 master 的顺序。

除了必须在合并之前重新编号迁移之外,有什么好的技巧可以解决这个问题?

汤姆

0 投票
1 回答
3123 浏览

flyway - 多个应用实例尝试同时迁移同一个数据库

我刚开始在一个非常标准的带有 mysql 数据库的 Spring 2.5 Web 应用程序中使用 flyway。它已经投入生产多年,拥有大量数据。

我将它连接到启动时自动迁移

并且使 Spring 的持久性单元管理器(使用 jpa)依赖于它,因此数据库将在 JPA 初始化之前被迁移。

这工作正常。

在我们的生产环境中,我们有几个我们希望同时更新的节点。因此,如果每个实例长时间运行,它们将尝试执行相同的迁移。Flyway 的锁定功能应该可以防止这种情况。

我喜欢在生产中做任何事情之前测试这些东西,所以我做了;当两个应用程序实例同时启动并长时间运行迁移(6 分钟)时发生的情况是,过了一会儿,第二个实例失败了:

堆栈跟踪的更深处是 SQLException:

本质上它似乎超时。

我们正在使用 mysql 和 afaik 它试图锁定元数据表

我检查了它试图迁移的数据库及其锁定等待超时:

这是明显的罪魁祸首。但是,我不确定是否要增加数量,因为如果由于其他原因发生这种情况,我可能希望它超时。

我可能会尝试在迁移期间将其设置为更高的值。除了它似乎是一个只读变量:

如果我知道会有长时间运行的迁移,我当然可以半手动地进行部署,例如只更新一个实例并等待它通过迁移,然后更新其他实例。

有没有人有任何其他建议?

0 投票
1 回答
2184 浏览

flyway - 占位符替换不适用于飞路测试扩展

我正在尝试将占位符与 flyway 测试扩展 1.7.0 一起使用。我在 flyway.properties 中定义了一个占位符:

我的 sql 脚本如下所示:

运行 flyway 测试时,我收到以下错误:

所以看起来占位符替换不起作用。顺便说一句,我的 flyway.properties 文件已成功加载(我也将它用于其他值,例如 jdbc url)。

有人知道这里可能是什么问题吗?

EDIT1看起来 Flyway 类中的配置方法没有被调用。我必须在应用程序上下文中添加一些东西吗?

EDIT2我们找到的一种解决方案是在应用程序上下文中设置占位符:

但我们仍在寻找更好的解决方案......

0 投票
1 回答
3099 浏览

logging - 如何为自定义 Gradle 插件设置不同的日志级别

我正在为 gradle 编写一个 flyway 包装器插件。Flyway 已经使用 log4j 进行消息记录。

在信息级别上,所有输出都与用户相关。

当我将自定义插件添加到新项目并运行其中一项任务时,输出中不会显示任何内容。我必须运行 gradle flywayStatus--info 才能查看消息。

有没有办法更改插件中的 log4j 设置,以便在使用该插件的项目中不需要修改日志级别?

任何想法都会非常感激。

谢谢,格温

0 投票
1 回答
359 浏览

java - 通过 Flyway 的 ODBC 连接

我正在尝试使用 maven/flyway 通过 ODBC 进行数据库版本控制。

我使用 sql server localdb 作为数据库。但是当我运行 mvn flyway:status 时没有提供用户名/密码时,我收到以下错误:

Flyway 错误:com.googlecode.flyway.core.exception.FlywayException:缺少数据库用户名。它没有被指定为属性,也没有在 settings.xml 中为 ID 为“flyway-db”的服务器定义

当我给出空的用户名/密码时,它显示:

Flyway 错误:com.googlecode.flyway.core.exception.FlywayException:缺少数据库用户名。它没有被指定为属性,也没有在 settings.xml 中为 id 为“flyway-db”的服务器定义 -> [帮助 1]

我的数据库没有用户名/密码。以下是我正在使用的配置标签(如果用户名/密码为空):

我相信对于空的用户名/密码,还有其他事情需要做。没有把握。非常感谢帮助。

0 投票
1 回答
972 浏览

maven - maven-flyway-plugin 不存在或找不到有效版本。Windows 中的 mvn cmd 行出错,但在 Eclipse 中运行正常

我可以从 Eclipse 内部运行 flyway 迁移,但不能从 Windows 中的 DOS 命令行运行。我正在运行 maven 2.2.1,Eclipse Indigo Service Release 1 Build id:20110916-0149。

同一项目的其他开发人员不会收到此错误。我搜索了 StackOverflow、http ://flywaydb.org/ 等,但没有看到其他人遇到这个特定问题。

我得到的错误是:- 插件 'org.apache.maven.plugins:maven-flyway-plugin' 不存在或找不到有效版本

0 投票
3 回答
173 浏览

flyway - flyway可以跨数据库处理不同的ID

我们的表(Oracle 数据库 11g)有一个由序列生成的 PK。这些 ID 在不同环境中不同步。如果我对表 A 进行了更改,我必须创建一个忽略 PK 并使用自然键的脚本。因此,例如,如果在 DEV 中,我使用 ID 102843 和 paret 代码 YU9 更新了一个零件,我无法针对 ID 102843 的 prod 发布更新。我必须发布零件代码 YU9 的更新。由于表是基于 ID 连接的,因此随着涉及的表越来越多,这变得越来越复杂。

无论如何,我们一直在寻找一种可以为此生成 sql 脚本并使我的生活不再是噩梦的工具。飞路可以吗?顺便说一句,如果有人知道另一种这样的产品,我很想听听(我已经和 Redgate 等谈过了(另外,不,我无法控制这些序列,也不能让它们保持一致。这只是事情是这样的)

澄清:我不是在问我的系统应该如何工作。这就是它的工作方式,并且不会很快改变。我只是问flyway产品是否有帮助。