当前位置: 首页 > 知识库问答 >
问题:

有没有办法让flyway中的迁移文件应用于开发人员的机器上,而不是生产机器上?

吕亮
2023-03-14

当我为我的应用程序开发一个使用大量新表的新功能时,表定义在开发几天后才稳定。我想将这些不稳定的迁移文件签入源代码管理,而无需将它们应用于生产机器,当我部署相同代码库的错误修复时。

有没有办法让flyway中的迁移文件应用于开发人员的机器上,而不是生产机器上?

我不喜欢特性分支,所以我想避免特性分支,因为它们对我来说太费力了。

共有1个答案

逄念
2023-03-14

因为我使用的是Spring 3.1,所以我能够使用spring profiles来解决我的问题,检测代码在什么环境中。下面是解决方案的工作原理。

  • db.migrations是生产迁移的去处
  • dev.db.migrations是开发迁移的地方。在新功能的初始开发过程中,当表每小时左右发生变化时,迁移文件会被添加到dev.db.migrations并检查到源代码控制中,它会在开发人员的机器上创建。开发人员通常会吹走测试数据库并使用示例数据重新创建它,因此不断更改中的文件并没有坏处dev.db.migrations它还让开发人员有机会为他们的更改获取版本号,因为他们会将文件签入源代码控制中。

下面是我使用的Spring配置文件飞道配置的XML。

<!-- =========================Configure Flyway ========================= -->
<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource"/>
    <property name="locations" ref="flyway-migration-locations" />
</bean>

<!-- ========================= Development Profile Configuration ========================= -->
<beans profile="development">
    <bean id="flyway-migration-locations" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <value>db.migration</value>
                <value>dev.db.migration</value>
            </list>
        </constructor-arg>
    </bean>
</beans>

<!-- ========================= Production Profile Configuration ========================= -->
<beans profile="production">
    <bean id="flyway-migration-locations" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <value>db.migration</value>
            </list>
        </constructor-arg>
    </bean>
</beans>
 类似资料:
  • 我试图做一个程序来创建一个无尽的循环,例如: 但是主要的问题是一个机器人听不到另一个机器人的声音,所以这不起作用。。。 有没有办法让机器人听另一个机器人的?提前感谢!:)

  • 我想知道公会成员何时登录,而不是成员何时加入,所以在这种情况下不起作用。也许有另一种方法来实现我想做的事情,所以我将在这里解释。 当我的网站的用户升级到标准或专业会员时,他们可以加入我的discord服务器。我仍然需要弄清楚如何确定discord用户是我网站上的标准/专业订阅会员,但我认为我可以发送一个一次性邀请链接或一个会员必须输入的密码,在机器人发送欢迎消息询问密码或其他信息后发送discor

  • 我要我的不和机器人发送彩色信息。 这是我的尝试: 对如何添加彩色文本到不和谐机器人有什么想法吗?我应该在开发人员不和中添加它吗?

  • 我有5个不同的jmeter脚本。这5个不同的jmeter脚本是在5个不同的jmx文件中准备的。 < li>Test1.jmx < li>Test2.jmx < li>Test3.jmx < li>Test4.jmx < li>Test5.jmx 我想在不同的机器上分布式运行这5个jmx文件。在我的架构中,我想有一个主服务器和5个从服务器。这个主服务器将控制5个从服务器。 例如: Test1.jmx

  • 问题内容: 我在Laravel大项目和Redis存储方面遇到问题。我们将会话存储在Redis中。我们已经有28GB的RAM。但是,它仍然可以相对快地运行到极限,因为我们有很多来自搜索引擎机器人的点击(每天超过25万次)。 有什么优雅的方法可以完全禁用机器人的会话?我已经实现了自己的会话中间件,如下所示: 这是我检测机器人的功能: 不幸的是,这似乎不起作用。有人在这里有小费或经验吗?非常感谢你! 问

  • 我正在尝试使用java(JDA)设置discord bot,但在服务器上使用它时遇到了一些问题。它适用于直接消息,但由于某些原因,它不能在服务器上使用。我通过intellij将该项目设置为Maven项目。 我是从一个 这在DM中运行良好,但在服务器中不起作用。 以下是我迄今为止所尝试的: 1. 我把它从收到的消息改为: 这在我的服务器上仍然不起作用,在dms中也不起作用。 2.我更改了bot的权限