• spring boot 整合Flayway数据库迁移


    一、概述 

      对于Flyway,对数据库的所有更改都称为迁移。迁移可以是版本控制的,也可以是可重复的。版本化迁移有两种形式:常规迁移和撤消迁移

      版本化迁移有一个版本、一个描述和一个校验和。版本必须是唯一的。为了让您能够记住每次迁移所做的事情,本文的描述纯粹是提供信息的。校验和用于检测意外变化。版本化迁移是最常见的迁移类型。它们只按顺序应用一次

      或者,可以通过提供具有相同版本的撤销迁移来撤销它们的效果。

      可重复迁移有描述和校验和,但没有版本。它们不是只运行一次,而是在每次校验和更改时(重新)应用。

      在一次迁移运行中,可重复迁移总是在所有挂起的版本化迁移执行完毕后最后应用。可重复迁移是按照描述的顺序应用的。默认情况下,版本化迁移和可重复迁移都可以用SQL或Java编写,并且可以由多条语句组成。

      默认情况下,版本化迁移和可重复迁移都可以用SQL或Java编写,并且可以由多条语句组成。

      Flyway会自动发现文件系统和Java类路径上的迁移

      为了跟踪哪些迁移已经在何时以及由谁应用,Flyway向您的模式中添加了一个模式历史表。

    二、版本化迁移文件

      最常见的迁移类型是版本化迁移。每个版本化迁移都有一个版本、一个描述和一个校验和。版本必须是唯一的。为了让您能够记住每次迁移所做的事情,本文的描述纯粹是提供信息的。校验和用于检测意外变化。

    版本化迁移只按顺序应用一次。

      迁移通常用SQL编写。这使得开始和利用任何现有的脚本、工具和技能变得容易。它使您能够访问数据库的全套功能,并且无需了解任何中间翻译层。

      基于SQL的迁移通常用于
      DDL更改(表、视图、触发器、序列等的CREATE/ALTER/DROP语句)
      简单参考数据更改(参考数据表中的CRUD)
      简单的批量数据更改(常规数据表中的CRUD)

      命名:

      为了通过Flyway获取,SQL迁移必须符合以下命名模式:

      The file name consists of the following parts:

    • PrefixV for versioned (configurable), U for undo (configurable) and R for repeatable migrations (configurable)
    • Version: Version with dots or underscores separate as many parts as you like (Not for repeatable migrations)
    • Separator__ (two underscores) (configurable)
    • Description: Underscores or spaces separate the words
    • Suffix.sql (configurable)

      必须为每个版本化迁移分配唯一的版本。只要符合通常的虚线符号,任何版本都是有效的。在大多数情况下,只需要一个简单的递增整数。不过Flyway非常灵活,所有这些版本都是有效的版本化迁移版本:

    • 1
    • 001
    • 5.2
    • 1.2.3.4.5.6.7.8.9
    • 205.68
    • 20130115113556
    • 2013.1.15.11.35.56
    • 2013.01.15.11.35.56

      版本化迁移按版本顺序应用。版本按您通常期望的数字排序。

    三、springboot使用flyway

    1、新建springboot项目

    2、引入flyway模块

       <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-core</artifactId>
                <version>5.2.4</version>
            </dependency>
    
     <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>


    3、配置数据源

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/flywaydb?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true
        username: root
        password: root123

    4、创建空数据库

    5、运行程序

    解决[08001] Could not create connection to database server. Attempted reconnect 3 times.

    Giving up.

    注意:8、0以后mysql的驱动是

    driver-class-name:  com.mysql.cj.jdbc.Driver

    flyway遇到的问题Caused by: java.lang.ClassNotFoundException: org.flywaydb.core.api.callback.FlywayCallbac

    注意:版本不对

  • 相关阅读:
    Gym
    struts2.5 使用感叹号和通配符实现动态方法调用无效的问题及解决!
    Offfice 多重版本key残留并存的异常问题
    IDEA Struts2 truts-default显红的解决办法
    Struts2的库在 IDEA 的外联库就会报错,不知道为什么。
    计算机二级python 知识点篇(第三方库)
    计算机二级python 知识点篇(python标准库)
    计算机二级python 知识点篇(内置函数整理)
    计算机二级python 知识点篇(文件和数据格式化)
    计算机二级python 知识点篇(组合数据类型)
  • 原文地址:https://www.cnblogs.com/topguntopgun/p/16018250.html
Copyright © 2020-2023  润新知