0

我想在 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()      

错误:

线程“main”org.flywaydb.core.api.FlywayException 中的异常:发现没有模式历史表的非空模式“公共”!使用baseline() 或将baselineOnMigrate 设置为true 来初始化模式历史表。在 org.flywaydb.core.Flyway$1.execute(Flyway.java:1197) 在 org.flywaydb.core.Flyway$1.execute(Flyway.java:1168) 在 org.flywaydb.core.Flyway.execute(Flyway.java :1655) 在 org.flywaydb.core.Flyway.migrate(Flyway.java:1168)

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

4

1 回答 1

3

找到没有模式历史表的非空模式“公共”!使用baseline()或设置baselineOnMigrate为 true 来初始化模式历史表。

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

默认情况下,Flyway 期望在一个全新的数据库上运行,在一个新建项目中。Flyway 首先安装自己的表,用于内部跟踪。这是您的错误消息中提到的“模式历史表”。安装自己的表后,Flyway 会运行您的 SQL 脚本来创建更多表。

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

  • 从头开始重新创建数据库,从空数据库开始,首先运行 Flyway,然后编写并执行 SQL 脚本以重新创建旧数据库的所有元素,最后导入现有数据。
  • 正如错误消息所建议的那样,阅读有关 Flyway基线功能的信息。
于 2018-05-05T08:09:34.297 回答