【问题标题】:Flywaydb error in kotlinkotlin中的Flywaydb错误
【发布时间】:2023-03-06 03:08:01
【问题描述】:

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

错误:

线程“主”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)

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

【问题讨论】:

    标签: kotlin flyway kotlin-exposed


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢回答 在我的数据库中,Flyway 创建一个表 flyway_schema_history。但 Flyway 没有在我的项目中创建 SQL 文件
    • 创建 SQL 文件。 Flyway 只是代表您按照规定的版本号文件命名约定确定的顺序运行它们。我建议阅读文档以了解 Flyway 的目的和操作。
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    相关资源
    最近更新 更多