kotlin 中的 Flywaydb 错误

Flywaydb error in kotlin

我想在 Kotlin 中使用 flywaydb 但我在使用时出错
我的数据库是 PostgreSQL,我的 ORM 是 Kotlin Exposed

代码:

val url = "jdbc:postgresql://127.0.0.1/test1"
    Database.connect(url, driver = "org.postgresql.Driver", user = "postgres", password = "123")

    var flyway =  Flyway()
    flyway.setDataSource(url, "postgres", "123")
    flyway.migrate()      

错误:

Exception in thread "main" org.flywaydb.core.api.FlywayException: Found non-empty schema(s) "public" without schema history table! Use baseline() or set baselineOnMigrate to true to initialize the schema history table. at org.flywaydb.core.Flyway.execute(Flyway.java:1197) at org.flywaydb.core.Flyway.execute(Flyway.java:1168) at org.flywaydb.core.Flyway.execute(Flyway.java:1655) at org.flywaydb.core.Flyway.migrate(Flyway.java:1168)

我该如何解决?我的代码哪里错了?

Found non-empty schema(s) "public" without schema history table! Use baseline() or set baselineOnMigrate to true to initialize the schema history table.

该错误消息几乎说明了一切。您似乎是 运行ning Flyway 在一个已经填充了 tables 的数据库上。

默认情况下,Flyway 期望 运行 在全新的数据库中,在 greenfield project 中。 Flyway 首先安装自己的 table,用于内部跟踪。这是您的错误消息中提到的“架构历史记录 table”。安装自己的 table 后,Flyway 运行 会创建您的 SQL 脚本,进一步创建 table。

如果将 Flyway 添加到现有数据库,请选择任一解决方案:

  • 从头开始重新创建您的数据库,从一个空数据库开始,运行首先使用 Flyway,然后编写并执行 SQL 脚本以重新创建旧数据库的所有元素,最后导入现有的数据。
  • 阅读 Flyway baseline 功能,正如错误消息所建议的那样。