flyway 社区版本使用团队(企业级)特性ignore-migration-patterns使用

标题是ignore-migration-patterns使用,其实所有团队(企业级)特性都可以使用,只是要按照我给的思路研究下就可以了,其实也很简单,只是改配置。

由于是破解的,直接放开到网上不太好,我就搞了一个vip,进行限流

由于我的mysql是5.7的,所以依赖是

          <!-- sql脚本管理工具 -->
            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-core</artifactId>
                <version>7.15.0</version>
            </dependency>

以下解决方案都是采用这个版本来进行的,其他版本未研究,如果需要可以根据我这把思路进行研究即可

背景:

 由于公司环境比较多,同时项目依赖产品进行定制化,那意味着定制化项目的sql和在产品里不能使用,但是产品你的sql可以在定制化项目里使用,就是父子关系,但是具体操作时就会报错

一、当开启validate-on-migrate 校验时,父项目找不到子项目的文件就会报错

Detected applied migration not resolved locally: 1.0.3000. If you removed this migration intentionally, run repair to mark the migration as deleted.
 

二、这个问题要解决,经过查看官网文档 ;

有两种解决方案

1、validate-on-migrate 进行关闭,但是关闭后所有的校验都无法使用了,,就是放开式,建议不用使用该方案;因为后期管理分混乱

2、通过查看官网文档,

ignoreMigrationPatterns 这个配置可以满足我,大家可以看看;当我配置后就报错了,

提示是商业版本的,那不就gg了吗

三、商业版本的特性怎么使用呢?

 1、推荐购买商业版本

2、按照我的思路进行破解

      根据上面发现

校验是通过加载配置抛出异常的,源码是有的,那意味着,我只要在初始化flyway之前把这个配置配置上去就可以了(这里有个前提,是所有功能的在这个版本都是有的,只是通过配置进行加载的,这还是可以破解,不像国产的开源,直接去除了源代码,破解了 也没办法使用);研究了通过spring定义bean定义时进行调整,发现太麻烦,第二个通过配置文件加载时也不行,因为设计到flyway的核心类进行加载,第三个就是我这边解决方案,通过自动注入方式进行调整

也就是重写 FlywayAutoConfiguration 这个类;重写比较简单,把这个类的源码拷贝下来,放到项目里,

这里所有配置都可以调整

我这边具体调整在 

设置true

即可 

最后的最后的别忘记了加

@Primary 这个组件,大家都懂了吧,也就是在springboot加载flyway时动了手脚

这样配置就生效了;

 启动也就正常了

付源码:




/*
 * Copyright 2012-2021 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.MigrationVersion;
import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.flywaydb.core.api.migration.JavaMigration;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.*;
import org.springframework.boot.autoconfigure.flyway.*;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.jdbc.DatabaseDriver;
import org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer;
import org.springframework.context.annotation.*;
import org.springframework.core.convert.TypeDescriptor;
import org.springframework.core.convert.converter.GenericConverter;
import org.springframewo
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以得知flyway是一个数据库版本管理工具,可以帮助开发人员更好地管理数据库版本。而flyway-mysql则是flyway针对MySQL数据库的一个插件,可以帮助开发人员更好地管理MySQL数据库版本。 要使用flyway-mysql,需要按照以下步骤进行操作: 1. 在pom文件中添加flyway和MySQL的驱动依赖,如下所示: ```xml <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.2.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> ``` 需要注意的是,flyway版本和spring boot的版本需要兼容,否则会出现异常。 2. 在application.properties文件中配置MySQL数据库的连接信息,如下所示: ```properties spring.datasource.url=jdbc:mysql://127.0.0.1/resty-demo?useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=dev spring.datasource.password=dev1010 ``` 3. 在resources目录下创建db/migration目录,并在该目录下创建SQL脚本文件,如下所示: ```sql V1__create_user_table.sql CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50), age INT ); ``` 其中,V1__create_user_table.sql是一个版本号为1的SQL脚本文件,用于创建user表。 4. 在启动类上添加@EnableFlyway注解,如下所示: ```java @SpringBootApplication @EnableFlyway public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 5. 启动应用程序,flyway会自动检测db/migration目录下的SQL脚本文件,并执行其中的SQL语句,创建数据库表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值