数据库迁移

Ebean 已内置支持生成数据库迁移并运行它们

生成数据库迁移

请注意,我们可以使用 ebeaninitGenerateDbMigration(以下代码)添加到项目中。

src/test/java 中添加以下代码以生成迁移。

src/test/kotlin 中添加以下代码以生成迁移。

要生成数据库迁移,我们运行此 main 方法。迁移 DDL 将根据模型的更改(例如,更改表添加列等)基于给定平台生成。

package main;

import io.ebean.annotation.Platform;
import io.ebean.dbmigration.DbMigration;
import java.io.IOException;

public class GenerateDbMigration {

  /**
   * Generate the DDL for the next DB migration.
   */
  public static void main(String[] args) throws IOException {

    DbMigration dbMigration = DbMigration.create();
    dbMigration.setPlatform(Platform.POSTGRES);

    dbMigration.generateMigration();
  }
}
package main

import io.ebean.annotation.Platform
import io.ebean.dbmigration.DbMigration

/**
 * Generate the DDL for the next DB migration.
 */
fun main(args : Array<!String>) {

  // requires jvmTarget 1.8
  val dbMigration = DbMigration.create()
  dbMigration.setPlatform(Platform.POSTGRES)

  dbMigration.generateMigration()
}
  

当我们完成一些工作并认为它已准备好发布时,我们会手动运行它。

运行生成将在离线模式下启动 Ebean,执行模型的 DIFF 并生成迁移 DDL 脚本。

运行迁移

要使用内置迁移运行器运行迁移,请将 ebean.migration.run 设置为 true。

在 application.yaml 中
## run migrations when the Ebean starts
ebean:
  migration:
    run: true

使用 ebean.migration.run=true,当 Ebean 启动时,它将查看迁移并运行任何需要运行的迁移。迁移运行器默认情况下将创建一个名为 db_migration 的表,该表保存已运行迁移的元数据,并在成功执行迁移时插入到此表中。