kotlin中的Flywaydb错误

时间:2018-05-05 08:02:38

标签: kotlin flyway kotlin-exposed

我想在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:   找到没有架构历史表的非空架构“public”!使用   baseline()或将baselineOnMigrate设置为true以初始化架构   历史表。在   org.flywaydb.core.Flyway $ 1.execute(Flyway.java:1197)at   org.flywaydb.core.Flyway $ 1.execute(Flyway.java:1168)at   org.flywaydb.core.Flyway.execute(Flyway.java:1655)at   org.flywaydb.core.Flyway.migrate(Flyway.java:1168)

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

1 个答案:

答案 0 :(得分:3)

  

找到非空架构" public"没有架构历史表!使用baseline()或将baselineOnMigrate设置为true以初始化架构历史记录表。

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

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

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

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