问题标签 [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.
database - 生产数据库中的 Flyway 集成
我们有一个生产中的数据库,它在“用户”表中已经有很多行。考虑flyway网站上的以下声明:
如果您有一个尚未被 Flyway 填充的现有数据库,那么您可以这样做:
- 创建一个初始迁移脚本,该脚本将重新创建您的当前状态并为其提供低版本号。
- 使用 flyway:init 创建元数据表并将此脚本设置为当前版本。
我想使用 flyway 来管理我的架构和数据库中的各种常量,但我不希望 V1__Base_version.sql 包含我们当前生产用户的帐户信息,特别是考虑到它存储在 SCM 中。如果我正确理解了这些说明,我需要能够使用 V1__Base_version.sql “重新创建 [我的] 当前状态”。
那么仅使用架构和常量创建初始迁移可以正常工作吗?还是我们工作站上的数据库需要 100% 匹配生产中的数据库?
maven - 我可以使用 maven pom.xml 中的属性文件进行飞行路径配置吗
我不想在这里提及驱动程序、url 和用户。我已经开了abc.property
一个src/main/resources
。如何在这里使用该文件?
version-control - Flyway - 支持同时版本/多个分支
有谁知道允许大型项目(有许多工程师并行工作)使用Flyway处理版本控制的好方法?我们经常发现,在合并到 master 期间,我们最终会因为 2-3 个独立项目需要更改数据库,并且使用相同的版本号而导致合并冲突。
在这种情况下,我什至不确定 Rails 样式的版本控制时间戳是否有效,因为您不一定知道合并到 master 的顺序。
除了必须在合并之前重新编号迁移之外,有什么好的技巧可以解决这个问题?
汤姆
flyway - 多个应用实例尝试同时迁移同一个数据库
我刚开始在一个非常标准的带有 mysql 数据库的 Spring 2.5 Web 应用程序中使用 flyway。它已经投入生产多年,拥有大量数据。
我将它连接到启动时自动迁移
并且使 Spring 的持久性单元管理器(使用 jpa)依赖于它,因此数据库将在 JPA 初始化之前被迁移。
这工作正常。
在我们的生产环境中,我们有几个我们希望同时更新的节点。因此,如果每个实例长时间运行,它们将尝试执行相同的迁移。Flyway 的锁定功能应该可以防止这种情况。
我喜欢在生产中做任何事情之前测试这些东西,所以我做了;当两个应用程序实例同时启动并长时间运行迁移(6 分钟)时发生的情况是,过了一会儿,第二个实例失败了:
堆栈跟踪的更深处是 SQLException:
本质上它似乎超时。
我们正在使用 mysql 和 afaik 它试图锁定元数据表
我检查了它试图迁移的数据库及其锁定等待超时:
这是明显的罪魁祸首。但是,我不确定是否要增加数量,因为如果由于其他原因发生这种情况,我可能希望它超时。
我可能会尝试在迁移期间将其设置为更高的值。除了它似乎是一个只读变量:
如果我知道会有长时间运行的迁移,我当然可以半手动地进行部署,例如只更新一个实例并等待它通过迁移,然后更新其他实例。
有没有人有任何其他建议?
flyway - 占位符替换不适用于飞路测试扩展
我正在尝试将占位符与 flyway 测试扩展 1.7.0 一起使用。我在 flyway.properties 中定义了一个占位符:
我的 sql 脚本如下所示:
运行 flyway 测试时,我收到以下错误:
所以看起来占位符替换不起作用。顺便说一句,我的 flyway.properties 文件已成功加载(我也将它用于其他值,例如 jdbc url)。
有人知道这里可能是什么问题吗?
EDIT1看起来 Flyway 类中的配置方法没有被调用。我必须在应用程序上下文中添加一些东西吗?
EDIT2我们找到的一种解决方案是在应用程序上下文中设置占位符:
但我们仍在寻找更好的解决方案......
logging - 如何为自定义 Gradle 插件设置不同的日志级别
我正在为 gradle 编写一个 flyway 包装器插件。Flyway 已经使用 log4j 进行消息记录。
在信息级别上,所有输出都与用户相关。
当我将自定义插件添加到新项目并运行其中一项任务时,输出中不会显示任何内容。我必须运行 gradle flywayStatus
--info 才能查看消息。
有没有办法更改插件中的 log4j 设置,以便在使用该插件的项目中不需要修改日志级别?
任何想法都会非常感激。
谢谢,格温
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]
我的数据库没有用户名/密码。以下是我正在使用的配置标签(如果用户名/密码为空):
我相信对于空的用户名/密码,还有其他事情需要做。没有把握。非常感谢帮助。
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' 不存在或找不到有效版本
flyway - flyway可以跨数据库处理不同的ID
我们的表(Oracle 数据库 11g)有一个由序列生成的 PK。这些 ID 在不同环境中不同步。如果我对表 A 进行了更改,我必须创建一个忽略 PK 并使用自然键的脚本。因此,例如,如果在 DEV 中,我使用 ID 102843 和 paret 代码 YU9 更新了一个零件,我无法针对 ID 102843 的 prod 发布更新。我必须发布零件代码 YU9 的更新。由于表是基于 ID 连接的,因此随着涉及的表越来越多,这变得越来越复杂。
无论如何,我们一直在寻找一种可以为此生成 sql 脚本并使我的生活不再是噩梦的工具。飞路可以吗?顺便说一句,如果有人知道另一种这样的产品,我很想听听(我已经和 Redgate 等谈过了(另外,不,我无法控制这些序列,也不能让它们保持一致。这只是事情是这样的)
澄清:我不是在问我的系统应该如何工作。这就是它的工作方式,并且不会很快改变。我只是问flyway产品是否有帮助。