Flyway 报错:Detected applied migration not resolved locally:2和执行脚本错误

目录

一.前言

1.Flyway简介

2.flyway依赖包

3.使用flyway的好处

二.问题分析

1.Flyway 报错:Detected applied migration not resolved locally:2

1.1问题分析:

1.2解决方法

2.执行脚本错误

2.1问题分析

2.2问题解决

三. 总结


一.前言

在实际开发中使用到Flyway ,对于flyway我们做一下简单介绍

1.Flyway简介

 Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本。

  在项目或产品中,很难一开始就把业务理清楚,把数据库表设计好,因此数据表也会在迭代周期不断迭代。在Java应用程序中使用Flyway,能快速有效地用于迭代数据库表结构,并保证部署到测试环境或生产环境时,数据表都是保持一致的。

具体介绍请看Flyway官方文档

https://flywaydb.org/documentation/

2.flyway依赖包

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>7.9.2</version>
</dependency>

3.使用flyway的好处

在多人开发的项目中,我们都习惯了使用SVN或者Git来对代码做版本控制,主要的目的就是为了解决多人开发代码冲突和版本回退的问题。

其实,数据库的变更也需要版本控制,在日常开发中,我们经常会遇到下面的问题:

自己写的SQL忘了在所有环境执行。
别人写的SQL我们不能确定是否都在所有环境执行过了。
有人修改了已经执行过的SQL,期望再次执行。
需要新增环境做数据迁移。
每次发版需要手动控制先发DB版本,再发布应用版本。
其它场景。
有了flyway,这些问题都能得到很好的解决。

二.问题分析

1.Flyway 报错:Detected applied migration not resolved locally:2

在使用Flyway作系统管理的时候我的程序报的此类错误

1.1问题分析:

报错内容:检测到应用迁移未在本地解决

在网上找了这个问题的原因是:

1.由于导入数据库包含flyway_schema_history表,所以本地运行时出现版本不一致报错,

2.迁移了一个版本为2的sql,然后我把它删了,它再第二次运行的时候,找不到我之前迁移过的V2__orange_cms这个文件。

1.2解决方法

特别注意:一定是在测试环境和本地环境

1.mvn flyway:clean,这一步会清空现有数据。

2.确保配置文件中,开启flyway。

3.启动项目,完成flyway_schema_history表初始化,启动完成后备份flyway_schema_history表

4.导入数据,此时flyway_schema_history表会被更新为导入数据的版本

5.导入成功后,删除flyway_schema_history表,将备份的flyway_schema_history表替换

6.再次启动应用,Success!

2.执行脚本错误

2.1问题分析

报错信息大致意思:在我项目配置文件开启Flyway时,会爆:执行sql异常,找不到"xxx"表.

 这个可是困扰我很久的一个问题, 看我的程序和配置都没有错,就是不知道错在哪里.

错误原因:由于我们的flyway是基于数据库mysql5.7的版本但是我的本机数据库版本是mysql5.5的所以开启Flyway配置进行数据库初始化总是报错"找不到xxx表"

2.2问题解决

升级我们的数据库版本,大于等于我们的开发数据库版本,由于升级数据库的道路有点曲折建议大家借鉴:比较详细

https://blog.csdn.net/m0_49284219/article/details/121972531

数据库升级完成后开启我们的Flyway配置

 启动程序来看看我们的项目来测试一下能否启动成功

三. 总结

1.强调:对于我们的Flyway要根据我们的实际情况进行我们的库表删除,不要忙目删除我们的flyway_schema_history表

2.flyway是对数据库版本管理比较优秀的一个工具,对数据库表的版本控制比较强.

3.对于上述有和我一样问题的同学希望能帮到大家,对于解决此类问题欢迎大家留言讨论,也希望大家对于Flyway其他问题也可以进行讨论

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值