ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Flyway管理数据库MySQL5.7入坑记录(一)

2022-08-28 22:33:24  阅读:203  来源: 互联网

标签:MySQL5.7 mysql flyway gradle Flyway plugins org buildscript 入坑


Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。

下面主要记录Flyway作为Gradle插件使用时遇到的问题。

访问Flyway网站上的文档,找到首次使用Gradle插件的方式:https://flywaydb.org/documentation/getstarted/firststeps/gradle

buildscript {
    dependencies {
        classpath 'com.h2database:h2:1.4.197'
    }
}

plugins {
    id "org.flywaydb.flyway" version "9.2.0"
}

flyway {
    url = 'jdbc:h2:file:./target/foobar'
    user = 'sa'
}

示例给出的是HSQL数据库的配置方式,于是将其它改为MySQL,我的build.gradle配置文件内容如下:

apply from: 'config.gradle'

buildscript {
    ext {
        springBootVersion = '2.5.13'
        FAST_MIRROR_REPO_URL = 'https://maven.aliyun.com/nexus/content/groups/public/'
    }
    repositories {
        maven { url FAST_MIRROR_REPO_URL }
        mavenCentral()
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
        classpath 'mysql:mysql-connector-java:8.0.29'
    }
}

plugins {
    id "org.flywaydb.flyway" version "9.2.0"
}

flyway {
    url = 'jdbc:mysql://localhost:3306/jeesite4?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai'
    user = 'root'
    password = 'root'
    locations = ['filesystem:db/migration']
}

第一坑:刷新Gradle出现错误:only buildscript {} and other plugins {} script blocks are allowed before plugins {} blocks...

Gradle长时间不用只记得简单的用法,这个错误没有遇到过,当前Gradle的版本是7.0,难道是升级带来的问题,不想降低版本解决这个问题,通过分析出错信息发现在plugins{}块之前,只允许buildscript{}和其他插件{}脚本块,不允许其他语句。又上网查了一下,知道build.grade的插件配置有两种形式plugins(id 'java')和apply plugin:'java',配置插件的时候用plugins{}的格式的时候,如果位置不对的话会报这个错误。plugins{}必须放在buildscript{}之后或者其他的plugins{}的后边,报这个错误是因为plugins{}的前面我多加了个语句 apply from: 'config.gradle',重新调整build.gradle脚本,具体内容如下:

buildscript {
    ext {
        springBootVersion = '2.5.13'
        FAST_MIRROR_REPO_URL = 'https://maven.aliyun.com/nexus/content/groups/public/'
    }
    repositories {
        maven { url FAST_MIRROR_REPO_URL }
        mavenCentral()
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
        classpath 'mysql:mysql-connector-java:8.0.29'
    }
}

plugins {
    id "org.flywaydb.flyway" version "9.2.0"
}

flyway {
    url = 'jdbc:mysql://localhost:3306/jeesite4?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai'
    user = 'root'
    password = 'root'
    locations = ['filesystem:db/migration']
}

apply from: 'config.gradle'

至此build.gradle脚本重新载入不再出错,可以正常使用了,在IDEA的Gradle的任务面板中还出现Flyway的任务列表,如下图所示:

 

标签:MySQL5.7,mysql,flyway,gradle,Flyway,plugins,org,buildscript,入坑
来源: https://www.cnblogs.com/xupeixuan/p/16634270.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有