江西南昌网站定制,高新网站设计找哪家,广告网站设计怎么样,wordpress展示主题文章目录 概要Spring Boot 集成 FlywayFlyway 其他用法bug错误Flyway版本不兼容数据库存在表了Flyway 的校验和#xff08;Checksum#xff09;不匹配 概要
在 Spring Boot 项目开发中#xff0c;数据库的变更不可避免。手动执行 SQL 脚本不仅容易出错#xff0c;也难以维… 文章目录 概要Spring Boot 集成 FlywayFlyway 其他用法bug错误Flyway版本不兼容数据库存在表了Flyway 的校验和Checksum不匹配 概要
在 Spring Boot 项目开发中数据库的变更不可避免。手动执行 SQL 脚本不仅容易出错也难以维护数据库版本的一致性。Flyway 作为一款轻量级的数据库迁移工具能够帮助我们优雅地解决这些问题。
Spring Boot 集成 Flyway
1、添加 Flyway 依赖 dependencygroupIdorg.flywaydb/groupIdartifactIdflyway-core/artifactIdversion6.1.0/version/dependency2、配置 Flyway
spring:flyway:enabled: truelocations: classpath:db/migrationbaseline-on-migrate: trueplaceholder-replacement: falsedatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/my_info?useUnicodetruecharacterEncodingutf8autoReconnecttrueallowMultiQueriestrueuseSSLfalseusername: rootpassword: iuowiebd3、创建数据库迁移脚本 Flyway 使用 SQL 脚本来定义数据库的变更。脚本需要放在 src/main/resources/db/migration 目录下默认路径并且遵循特定的命名规则V版本号__描述.sql
例如V1__create_user_table.sql
CREATE TABLE user
(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL
);insert into user (name, email)
values (user1, user1qq.com);4、启动应用 启动 Spring Boot 应用Flyway 会自动执行 db/migration 目录下的迁移脚本并将执行记录存储在 flyway_schema_history 表中。
控制台关于 flyway 的日志信息
成功创建表
Flyway 其他用法
1、 禁用 Flyway 自动迁移 在某些场景下可能需要手动控制 Flyway 的迁移可以禁用自动迁移
spring:flyway:enabled: falsebug错误
Flyway版本不兼容
如果使用的 Flyway 版本与 Spring Boot 版本不兼容可能会导致 Flyway 无法正常工作。
控制台不打印任何关于 flyway 的日志。
数据库存在表了
数据库存在表了就不会执行 sql 了。
Flyway 只会执行比当前数据库版本号更高的迁移脚本。如果数据库的当前版本是 1而你的迁移脚本的版本号也是 1 或者更低Flyway 会认为这些脚本已经执行过因此不会再次执行。
所以只需把 sql 脚本的版本改一下V2__create_user_table.sql升高版本
Flyway 的校验和Checksum不匹配
我先启动项目数据库迁移成功然后我改动了sql文件就报错
如果本地迁移脚本的内容发生了更改例如修改了 SQL 脚本Flyway 会检测到校验和不匹配从而抛出此错误。