为 Java 应用程序运行数据库迁移

Posted

技术标签:

【中文标题】为 Java 应用程序运行数据库迁移【英文标题】:Running DB migration for a Java app 【发布时间】:2012-08-16 20:58:37 【问题描述】:

在 Heroku 上的推荐方法是什么?有什么最佳实践吗?比如工具等。

【问题讨论】:

你用的是什么持久化框架? 【参考方案1】:

一个迟到的答案,但如果你没有使用 Play! (它有一个名为“Evolutions”的内置解决方案),我建议查看 liquibase (http://www.liquibase.org/)。从概念上讲,它的工作原理类似于 Play!进化或 Rails 迁移 - 模块化 DDL/DML 步骤,按顺序执行并随时间跟踪,以便维护数据库的活动历史记录。架构定义通过非常简单的 XML 格式定义,能够定义 SQL 语句、回滚步骤等。

它也可以连接到 Spring 应用程序上下文以在服务器启动时执行,这使其非常适合 Heroku。比如context.xml中的sn -p会在Spring启动时触发数据库升级分析:

<bean class="liquibase.integration.spring.SpringLiquibase" id="liquibase" lazy-init="false">
  <property name="dataSource" ref="dataSource"/>
  <property name="changeLog" value="classpath:META-INF/schema/db-changelog-master.xml"/>
</bean>

【讨论】:

以上是关于为 Java 应用程序运行数据库迁移的主要内容,如果未能解决你的问题,请参考以下文章

Prisma:所有迁移都已应用

如何在生产中使用 Rocket 运行 Diesel 迁移?

在运行时在 Java 代码中运行 flyway 迁移

重新运行 Django 数据迁移

Flyway 未接收 Java 迁移

在使用私有 IP 连接到云 sql 的云构建上运行数据库迁移