【问题标题】:Flyway migration fails due to Unique index or primary key violation由于唯一索引或主键违规,Flyway 迁移失败
【发布时间】:2014-12-27 14:48:25
【问题描述】:

我开始在我的 spring 管理的 java 项目中使用 flyway(我也在使用 hibernate)。

我遵循了flyway的文档。我还配置了maven插件,一切正常。

尝试使用 maven 插件进行清理、初始化和迁移,一切正常。

如果我尝试运行我的应用程序(其中我有我的 flyway bean):

<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource" />
</bean>

我明白了:

  • 数据库的架构已创建
  • schema_version 表已创建
  • 我创建整个数据库的脚本工作

很遗憾,由于迁移过程中出现我不理解的错误,我的应用无法启动:

    31/10/2014 11:03:34  INFO DbSupportFactory:43 - Database: jdbc:h2:~/db/db (H2 1.4)
31/10/2014 11:03:34  INFO DbValidate:43 - Validated 1 migration (execution time 00:00.015s)
31/10/2014 11:03:34  INFO MetaDataTableImpl:43 - Creating Metadata table: "PUBLIC"."schema_version"
31/10/2014 11:03:34  INFO DbMigrate:43 - Current version of schema "PUBLIC": << Empty Schema >>
31/10/2014 11:03:34  INFO DbMigrate:43 - Migrating schema "PUBLIC" to version 3.0.0
31/10/2014 11:03:34 ERROR ContextLoader:331 - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in ServletContext resource [/WEB-INF/spring/app-jpa-config.xml]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Unable to insert row for version '3.0.0' in metadata table "PUBLIC"."schema_version"
...
...
...
Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "PRIMARY_KEY_6 ON PUBLIC.""schema_version""(""version"") VALUES ( /* 3 */ CAST('3.0.0' AS VARCHAR_IGNORECASE) )"; SQL statement:
INSERT INTO "PUBLIC"."schema_version" ("version_rank","installed_rank","version","description","type","script","checksum","installed_by","execution_time","success") VALUES (?, ?, ?, ?, ?, ?, ?, USER(), ?, ?) [23505-182]

所以似乎是一个重复的异常,但它很奇怪。在此之后,我看到了 db,并且似乎总是正确的:

  • schema_versione 包含两行:flyway init 和我的 3.0.0 版脚本
  • 我看到整个数据库都创建好了

所以我的问题是:出了什么问题? flyway 是否尝试进行两次迁移?

谢谢

【问题讨论】:

    标签: flyway


    【解决方案1】:

    我解决了这个问题。最后是一个愚蠢的问题:在我的 sql 脚本中还创建了 schema_version。当然是错误的。

    在脚本中删除该部分一切正常!

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 2019-09-28
      • 2019-12-24
      • 2021-05-19
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 2021-08-16
      • 2019-01-16
      相关资源
      最近更新 更多