当前位置: 首页 > 知识库问答 >
问题:

Flyway升级4.2.0->5.0.0迁移失败,即使指定flyway.table

容柏
2023-03-14

我正在更新我们应用程序中落后的一些maven依赖项,从flyway maven插件4.2.0升级时遇到了一个问题,我们的reset和migrate make命令失败了,我找不到任何有用的结果。

最初,我试图从4.2.0转移到5.2.4。当我无法解决我的错误时,我退回到5.0.0的单个版本。在5.0.0的发行说明之后,我将flyway.table=schema_version添加到我的flyway-$env.properties文件中,并更新了我的Makefile命令以使用-Dflyway.configFiles=

当我尝试迁移现有数据库飞行路线时,会尝试应用所有脚本,从而导致初始数据库脚本出现约束冲突。尝试迁移空数据库飞行通道时,如果在运行初始脚本后无法锁定schema_version表,则失败。

make命令执行以下操作:

@mvn -pl db flyway:repair \
    -Dflyway.url="jdbc:mysql://${FLYWAY_TARGET_HOST}:${FLYWAY_TARGET_PORT}/${FLYWAY_TARGET_DB}?useUnicode=true&characterEncoding=utf8&useSSL=false" \
    -Dflyway.password=${FLYWAY_TARGET_DB_PW} \
    -Dflyway.user=${FLYWAY_TARGET_DB_USER} \
    -Dflyway.configFiles="src/main/resources/config/flyway/${FLYWAY_CONFIG_FILENAME}.properties"
@mvn -pl db flyway:migrate \
    -Dflyway.url="jdbc:mysql://${FLYWAY_TARGET_HOST}:${FLYWAY_TARGET_PORT}/${FLYWAY_TARGET_DB}?useUnicode=true&characterEncoding=utf8&useSSL=false" \
    -Dflyway.password=${FLYWAY_TARGET_DB_PW} \
    -Dflyway.user=${FLYWAY_TARGET_DB_USER} \
    -Dflyway.configFiles="src/main/resources/config/flyway/${FLYWAY_CONFIG_FILENAME}.properties"

在空数据库上运行时,会提供以下输出:

[INFO] --- flyway-maven-plugin:5.0.0:migrate (default-cli) @ db ---
[INFO] Flyway Community Edition 5.0.0 by Boxfuse
[INFO] Database: jdbc:mysql://localhost:3306/db_test (MySQL 5.7)
[INFO] Successfully validated 46 migrations (execution time 00:00.029s)
[INFO] Creating Schema History table: `db_test`.`schema_version`
[WARNING] Could not find schema history table `db_test`.`schema_version`, but found `db_test`.`schema_version` instead. You are seeing this message because Flyway changed its default for flyway.table in version 5.0.0 to flyway_schema_history and you are still relying on the old default (schema_version). Set flyway.table=schema_version in your configuration to fix this. This fallback mechanism will be removed in Flyway 6.0.0.
[INFO] Current version of schema `db_test`: << Empty Schema >>
[INFO] Migrating schema `db_test` to version 1.0 - DbBaseline
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.799 s
[INFO] Finished at: 2019-04-23T18:12:57-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.flywaydb:flyway-maven-plugin:5.0.0:migrate (default-cli) on project db: org.flywaydb.core.internal.exception.FlywaySqlException: 
[ERROR] Unable to lock table `db_test`.`schema_version`

共有1个答案

拓拔弘化
2023-03-14

在清醒地看待这一点之后,问题在于我们的 V1.0 脚本,特别是我们在创建表之前删除并重新创建架构。这导致在应用 V1.0 脚本后,飞行方式生成的表不存在。

删除这一行后,所有flyway作业都会正确执行。幸运的是,flyway:repair纠正了< code>schema_version表中的校验和,无需任何修改或手动编辑数据库

 类似资料:
  • 我已成功地将spring boot配置为使用Flyway的新项目 随Postgres数据库从版本0001.0迁移到0008.0 我已在本地手动更改脚本,但flyway迁移失败。 错误消息示例: 注意:-我不想从表flyway_schema_history中删除脚本条目。

  • 我刚刚在配置和充分理解flyway的过程中遇到了这样的情况: 我已成功配置新项目以使用Flyway。 我已成功将测试数据库从版本0迁移到1.0.3。 无法执行到版本1.0.4的迁移。(我试图添加已经存在的列,到目前为止没有问题,是我的错。) 但是,一旦我对相应的脚本进行了必要的更改以使其工作,flyway就会不断显示这样的消息: 由于我不想恢复一个完整的转储并再次应用每一次迁移,只是为了使alte

  • 指导如何从Bootstrap v3.x升级到v4.x,重点是主要的变化,有什么新内容,以及哪些内容被移除了。 升级到 v4 Bootstrap 4 几乎是对整个项目进行了重写。其中最显著的变化都概括到了下面的内容,与以前相比,拥有了更多的具体的类以及把一些有关的部分变成了相关的组件。 当心!它在 flux 中工作的时候和在 v4 alphas 进程中工作是一致的。只有当它在不完整的情况下,我们才会

  • 我有一个飞行路线例外: 我在文档和论坛上查找,但没有找到这个异常的含义。请有人告诉我这些异常的原因是什么!谢谢

  • 问题内容: 我在生产环境上运行Django 1.6.6,最近在登台(开发服务器)上升级到1.9.7。此更新是在服务器上执行的,我按照此处“从South升级”中概述的步骤进行操作。 我注意到迁移文件的结构已更改,并且不再包含语句。这会引起问题,因为如果我从GitHub存储库中提取此新代码并运行或,它会说: 追溯指向我的urls.py,因为我在查询集中引用了模型: 在1.9升级之前,已经为我创建了表,

  • 迁移 Navicat Data Modeler 到新的电脑 在 Navicat Data Modeler,选择“Navicat Data Modeler”->“注册”。 【永久许可证】点击“取消激活”以在线取消激活许可证密钥。 【订阅方案】点击“退出”以退出你的 Navicat ID。 在现有的电脑解除安装 Navicat Data Modeler。 在新的电脑重新安装 Navicat Data