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

注意:版本不对

 

posted on 2022-03-17 17:36  topguntopgun  阅读(302)  评论(0编辑  收藏  举报

导航