工信部网站备案验证码,文化传媒网站封面,在百度上怎么发布广告,建立网站的主要步骤1、flyway
flyway官方文档地址#xff1a;https://documentation.red-gate.com/fd 对于不怎么看文档的我来说#xff1a; 1#xff09;flyway是个管理数据库版本的工具#xff0c;可以对不同环境的sql进行迁移操作。 2#xff09;优点#xff1a;初始化、后期数据的管理…1、flyway
flyway官方文档地址https://documentation.red-gate.com/fd 对于不怎么看文档的我来说 1flyway是个管理数据库版本的工具可以对不同环境的sql进行迁移操作。 2优点初始化、后期数据的管理、变更等个人认为锦上添花的是一件执行数据脚本方便快捷 对于数据库每当发布时会出现手动执行sql脚本进行升级数据库中间经常出现一些漏写、错写情况对数据库的版本与代码的版本不匹配
2、文件命名规则 前缀: V 代表版本变迁(Versioned Migrations), U 代表撤销变迁(Undo Migrations) R 代表可重复变迁(Repeatable Migrations)一般为可重复执行的sql语句。 版本号: 唯一的版本号比如V1.0.1 分隔符: __ (两个下划线) 描述信息: 描述信息 后缀: .sql 其中V开头的SQL执行优先级要比R开头的SQL优先级高
命名eg
V1__insert.sql3、版本号
- 0.0.1.1 比 0.0.1 高
- 0.0.10 和 0.0.010 一样高4、Springboot集成Flyway
4.1 pom ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--引入 Spring Boot Starter 父工程 --parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.0/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.flyway/groupIdartifactIdflyway/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding!--跳过测试类打包--skipTeststrue/skipTests!-- spring-boot spring cloud alibaba --spring-boot.version3.2.0/spring-boot.versionspring-cloud-alibaba.version2022.0.0.0-RC2/spring-cloud-alibaba.versionspring-cloud.version2023.0.0/spring-cloud.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependency!-- mysql数据库 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.32/version/dependency!--导入MP包之后,删除原有的Mybatis的包 --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus/artifactIdversion3.5.4.1/version/dependencydependencygroupIdorg.flywaydb/groupIdartifactIdflyway-core/artifactIdversion9.22.2/version/dependency!--必须同时引入flyway-mysql否则会报不支持mysql8.1版本数据库。 --dependencygroupIdorg.flywaydb/groupIdartifactIdflyway-mysql/artifactIdversion9.22.2/version/dependency/dependenciesbuildpluginsplugingroupIdorg.flywaydb/groupIdartifactIdflyway-maven-plugin/artifactIdversion8.0.4/versionconfigurationurl 数据库地址/urluser数据库用户名/userpassword密码/passworddrivercom.mysql.cj.jdbc.Driver/driver/configuration/plugin/plugins/build/project
4.2 application.yml
spring:# 数据库配置datasource:url: username: password: driver-class-name: com.mysql.cj.jdbc.Driverflyway:# 开启数据库脚本备份enabled: true# 默认1从0开始可以规避版本1不执行问题baseline-version: 0# flyway 的 clean 命令会删除指定 schema 下的所有 table, 生产务必禁掉。这个默认值是 false 理论上作为默认配置是不科学的。clean-disabled: false# SQL 脚本的目录,多个路径使用逗号分隔 默认值 classpath:db/migrationlocations: classpath:db/migration#是否允许无序的迁移默认falseout-of-order: false#编码encoding: UTF-8# 执行迁移时是否自动调用验证 当你的 版本不符合逻辑 比如 你先执行了 DML 而没有 对应的DDL 会抛出异常validate-on-migrate: true# 设置为true当迁移发现数据库非空且存在没有元数据的表时自动执行基准迁移新建schema_version表baselineOnMigrate: true
4.3 启动项 SpringbootFlywayApplication
package com.Flywayimport org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class SpringbootFlywayApplication {public static void main(String[] args) {SpringApplication.run(SpringbootFlywayApplication.class, args);}}
4.4 操作方式
4.4.1 启动springboot项目 4.4.3 插件启动 4.5 数据查看 5、注意事项
报错后需要删除flyway_schema_history中记录否则启动失败V文件的优先级高于R假如三个V迁移脚本和一个R(无论新建还是修改)一起执行其中一个V报错则V会全部执行完成且记录到flyway_schema_history中而R不执行且不记录删除表中报错记录后重新启动则执行原错误V和未执行的R多个要执行的R中如果出现了其中一个出现了错误则在其后的R都不执行 R的执行顺序根据命名来进行排序一个文件中ddl并不由一个事务管理比如创建三个表中间创建表语句报错则第一个表还是会创建成功并且提交事务同一个迁移文件下假设都是DML即insert、delete、update那么如果中间出现错误所有的DML语句都会回滚已经执行过的迁移文件(V)不能修改否则启动报错 版本号相同会报错Found more than one migration with version ****删除sql文件后启动会报错