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:
- Prefix:
V
for versioned (configurable),U
for undo (configurable) andR
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) 编辑 收藏 举报