- 什么是FlyWay
Flyway是一个开源的数据库迁移工具,可以自动化地管理数据库版本控制和迁移。它可以集成到Java应用程序中,并与版本控制系统(如Git和Subversion)集成,使得团队协作数据库开发变得容易和高效。Flyway支持多种数据库,包括PostgreSQL、MySQL、Oracle、SQL Server和H2等。什么是FlyWay - 如何在Spring Cloud中集成Flyway
在pom文件中加载Flyway依赖(在使用Flyway时必须确保Mybatis架包已经在服务里添加了依赖
)
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.4</version>
</dependency>
application.yml配置:
erver:
port: 8093
spring:
application:
name: manage-kernel
flyway:
enabled: true
baseline-on-migrate: true
locations: classpath:db/migration
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/XXXXX?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: 123456
根据配置文件的位置,需要在resources目录下新建文件夹db.migration用来存放sql文件。
在db.migration文件夹下添加迭代更新脚本,文件名格式 V + 版本号 + 两个下划线_ + 描述 + .sql
文件命名必须以.sql结尾,在sql文件里添加脚本语句
alter table `t_student_info` Add column `student_name` varchar(200) not null default "" AFTER `student_id`;
启动项目:
代码里出现图上的日志即表明执行成功
Flyway执行成功后会在数据库表里创建 flyway_schema_history
表,该表的作用是来记录数据库中已经执行过的所有版本的信息,包括执行的版本号、描述、文件名、时间等等。每当Flyway执行一次迭代操作时就会插入一条记录,保证数据库的版本控制能够正常的运行
- 踩坑点
***************************
APPLICATION FAILED TO START
***************************
Description:
Flyway failed to initialize: none of the following migration scripts locations could be found:
- classpath:db/migration
Action:
Review the locations above or check your Flyway configuration
此处提示找不到脚本位置原因可能是因为你再创建的时候是使用 db.migration的方式进行创建的,通过该方式创建的文件夹可能看起来是分级的文件夹,但实际上可能在目录里他是一个名为db.migration的文件夹,所以需要分开创建
添加Flyway依赖后,运行程序时提示架包冲突,这时候看下自己flyway的版本是不是过高。我因为之前配置的flyway版本时7.15.0因此提示架包冲突,后将版本降低至5.2.4解决。
上述文章是我在搭建自己的微服务过程中出现的问题,如果这篇文章有什么错误之处,欢迎大佬指正!感谢!