从做系统后以前的网站打不开了怎么办理/常州网站关键词推广
Flyway
Flyway 是一款开源的数据库版本管理工具,用于管理和自动化数据库结构的变更。它可以跟踪和管理数据库的版本控制,并在应用程序启动时自动执行升级或回滚操作。
使用Flyway,你可以将数据库的变更以可重复且可控的方式应用到不同环境中,如开发、测试和生产环境。它支持多种数据库系统,包括MySQL、Oracle、PostgreSQL、SQL Server等。
Flyway将数据库结构的变更定义为一系列迁移脚本,通常是SQL脚本文件。每个迁移脚本都有一个唯一的版本号,Flyway会按照版本号的顺序依次执行这些脚本,以达到数据库结构的变更和更新。当应用程序启动时,Flyway会自动检测并执行未应用的迁移脚本,将数据库升级到最新版本。如果需要回滚到之前的版本,Flyway也提供了回滚操作的支持。
通过使用Flyway,开发团队可以更好地管理数据库结构的变更,保持不同环境之间的数据库一致性,并轻松地进行版本控制和追踪。
官方文档:https://documentation.red-gate.com/fd/
Flyway 工作流程
1、检测数据库状态:Flyway会连接到配置的数据库,并检测当前数据库的状态,包括已应用的迁移脚本版本和未应用的迁移脚本。
2、执行迁移脚本:Flyway会将未应用的迁移脚本按照版本号的顺序逐一执行。它会查找项目中指定的迁移脚本目录(默认为db/migration),并依次运行其中的SQL脚本。
3、更新数据库状态:每当一个迁移脚本成功执行后,Flyway会将其记录为已应用的脚本,并将其版本号存储在数据库的元数据表( flyway_schema_history)中,以便下次启动时进行跟踪和管理。
Spring Boot集成Flyway
1、添加依赖
在项目的pom.xml文件中,添加Flyway的Maven依赖,如果是springboot 2.xx,使用5.2.1或5.2.4:
<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>${flyway-core.version}</version></dependency>
2、数据库连接信息配置
在Spring Boot项目的application.properties或者application.yml文件中配置数据库的连接信息,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=dbuser
spring.datasource.password=dbpass
3、Flyway配置
在Spring Boot项目的application.properties或者application.yml文件中进行Flyway的相关配置,例如
# Flyway配置
#开启flyway功能,默认为true
spring.flyway.enabled=true
# 用于存储迁移历史记录的表名,默认为flyway_schema_history
spring.flyway.table=flyway_schema_history
# 迁移脚本编码,默认为UTF-8
spring.flyway.encoding=UTF-8
# 当迁移数据库存在但没有元数据的表时,自动执行基准迁移,新建flyway_schema_history表
spring.flyway.baseline-on-migrate=true
# 数据库迁移脚本的位置,默认为classpath:db/migration
spring.flyway.locations=classpath:db/migration
# SQL迁移脚本文件名前缀,默认为V
spring.flyway.sql-migration-prefix=V
# SQL迁移脚本文件名后缀,默认为.sql
spring.flyway.sql-migration-suffixes=.sql
# 是否在迁移时验证脚本,默认为true
spring.flyway.validate-on-migrate=true
# 检测迁移脚本的路径是否存在,默认为true,如不存在,则抛出异常,如果不想抛出异常可设为flase
spring.flyway.check-location=false
# 用于控制是否禁用 Flyway 的 clean 操作。
spring.flyway.clean-disabled=true
大家可以按照自己的需求来进行配置,上述配置除了spring.flyway.baseline-on-migrate和spring.flyway.clean-disabled,其他都比较见名知义,所以下面讲解下
spring.flyway.baseline-on-migrate
当spring.flyway.baseline-on-migrate属性设置为true时,Flyway会自动创建一个名为flyway_schema_history的表,并将当前数据库的schema版本设置为目前最新的迁移脚本版本。
具体来说,这个属性的作用包括:
- 当数据库中不存在迁移历史记录表时,Flyway 会自动创建该表,并将当前已经存在的数据库对象标记为已迁移状态。
- 当数据库中存在迁移历史记录表,但版本号低于最新的迁移脚本版本时,Flyway 也会自动创建一个基线版本,从而将现有的数据库对象标记为已迁移状态,并开始应用最新的迁移脚本。
这样做的目的是确保在已有数据库上使用 Flyway 进行迁移时,无论数据库是否已经有迁移历史记录,都能够正确地进行迁移操作。这在初始化应用程序时特别有用,因为它允许你在部署应用程序到新环境时,自动初始化数据库并应用最新的迁移脚本。
spring.flyway.clean-disabled
spring.flyway.clean-disabled 用于控制是否禁用 Flyway 的 clean 操作。
clean 操作是 Flyway 的一个功能,可以清空数据库中的所有对象(比如表、视图、存储过程等),以便进行全新的数据库迁移。在开发和测试阶段,这可能是有用的,因为它可以确保每次都从一个干净的数据库状态开始运行。但在生产环境中,执行 clean 操作可能会导致数据丢失,因此通常需要禁用它。
4、创建迁移脚本
在项目的src/main/resources/db/migration目录下创建数据库迁移脚本,命名规范为V1__Description.sql,其中V1是版本号,Description是描述。例如,可以创建一个V1.1__CreateTable.sql的文件来创建表。
Flyway 的 SQL 脚本命名规则:
-
版本号:SQL 脚本的文件名应该以一个版本号开头,版本号可以是数字序列或者带有点号分隔的数字序列,用来表示数据库结构的变更顺序。例如,V1.1__Create_Table.sql 或 V1.2__Add_Column.sql。
-
描述性名称:在版本号之后,使用双下划线 __ 分隔,并在其后添加描述性的名称,用来清晰地表明这个脚本的作用。例如,V1__Create_Table.sql 中的 “Create_Table” 就是一个描述性的名称。
根据以上的命名规则,Flyway 会按照版本号的顺序依次执行 SQL 脚本。在 SQL 脚本的编写中,你可以包含所有标准的 SQL 语句,比如 CREATE TABLE、ALTER TABLE、INSERT 等,以及适用于特定数据库的特性和语法。
如果我们一个版本下有多个文件,那还可以在版本后面使用序号来区分排序
实例:V1.1.0版本下,001为创建脚本,002为更新脚本
V1.1.0_001__create_table.sql
V1.1.0_002__insert_table.sql
Flyway 还提供了一种特殊的 SQL 脚本命名规则,用于标识可重复执行的 SQL 脚本。这种命名规则是基于前缀 R__ 的方式,以大写的“R”开头,后面再以两个下划线分割,其后跟文件名称,最后以.sql结尾
命名规则如下:
格式:R__<描述>.sql
示例:R__Initialize_Data.sql、R__Cleanup_Data.sql
可重复执行的 SQL 脚本指的是可以在任何数据库版本上多次运行而不会造成影响的脚本,通常用于执行一些初始化或数据清理等操作。
5、启动项目,flyway执行脚本
当我们把spring.flyway.baseline-on-migrate属性设为true的时候,第一次启动项目会为我们创建flyway_schema_history表,并执行相应的脚本
下面是表的字段说明
installed_rank:已安装的迁移脚本的排名(从 1 开始)。
version:迁移脚本的版本号。
description:迁移脚本的描述。
type:迁移脚本的类型(SQL、JAVA 等)。
script:迁移脚本的文件名。
checksum:迁移脚本的校验和。
installed_by:安装迁移脚本的用户。
installed_on:安装迁移脚本的时间戳。
execution_time:执行迁移脚本所需的时间(以毫秒为单位)。
success:表示迁移脚本是否成功安装。
说明,如果我们是spring.flyway.baseline-on-migrate=true自动生成的flyway_schema_history表,那么version字段默认值为1,此时的sql脚本必须比1大才会执行,比如V1.1,V1.1.0,V2等,如果使用V1命名我们的sql脚本,则脚本不会执行
相关文章:

Spring Boot学习:Flyway详解
Flyway Flyway 是一款开源的数据库版本管理工具,用于管理和自动化数据库结构的变更。它可以跟踪和管理数据库的版本控制,并在应用程序启动时自动执行升级或回滚操作。 使用Flyway,你可以将数据库的变更以可重复且可控的方式应用到不同环境中…...

Spark编程实验三:Spark SQL编程
目录 一、目的与要求 二、实验内容 三、实验步骤 1、Spark SQL基本操作 2、编程实现将RDD转换为DataFrame 3、编程实现利用DataFrame读写MySQL的数据 四、结果分析与实验体会 一、目的与要求 1、通过实验掌握Spark SQL的基本编程方法; 2、熟悉RDD到DataFram…...

文献研读|Prompt窃取与保护综述
本文介绍与「Prompt窃取与保护」相关的几篇工作。 目录 1. Prompt Stealing Attacks Against Text-to-Image Generation Models(PromptStealer)2. Hard Prompts Made Easy: Gradient-Based Discrete Optimization for Prompt Tuning and Discovery&#…...

cfa一级考生复习经验分享系列(十四)
首先说一下自己的背景,一个和金融没有半毛钱关系的数据分析师,之前考出了FRM。这次用一个半月突击12月的1级考试拿到了9A1B的成绩,纯属运气。以下纯属经(chě)验(dn),请看看就好&…...

vue本地缓存搜索记录(最多4条)
核心代码 //保存到搜索历史,最多存四个 item.name和item.code格式为:塞力斯000001var history uni.getStorageSync(history) || [];console.log("history", history)var index history.findIndex((items) > {return item.name items.nam…...

Linux创建Macvlan网络
最近在看Docker的网络,测试Macvlan部分时,发现Docker创建Macvlan与预期测试结果不一样。所以查阅了Linux下配置Macvlan,记录如下。 参考 1.Linux Macvlan 2.图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN 3.创建ma…...

从企业级负载均衡到云原生,深入解读F5
上世纪九十年代,Internet快速发展催生了大量在线网站,Web访问量迅速提升。在互联网泡沫破灭前,这个领域基本是围绕如何对Web网站进行负载均衡与优化。从1997年F5发布了BIG-IP,到快速地形成完整ADC产品线,企业级负载均衡…...

什么是redis雪崩
Redis雪崩是指在使用Redis作为缓存数据库时,由于某种原因导致Redis服务器不可用或性能严重下降,从而导致大量的请求集中到数据库服务器上,甚至直接导致数据库服务器崩溃。 当Redis服务器出现雪崩时,原本应该被缓存的数据无法从缓…...

[足式机器人]Part2 Dr. CAN学习笔记-Ch00 - 数学知识基础
本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Ch00 - 数学知识基础 1. Ch0-1矩阵的导数运算1.1标量向量方程对向量求导,分母布局,分子布局1.1.1 标量方程对向量的导数1.1.2 向量方程对向量的导数 1.2 案例分析…...

Jmeter、postman、python 三大主流技术如何操作数据库?
只要是做测试工作的,必然会接触到数据库 1、前言 只要是做测试工作的,必然会接触到数据库,数据库在工作中的主要应用场景包括但不限于以下: 功能测试中,涉及数据展示功能,需查库校验数据正确及完整性&…...

IRIS、Cache系统类汉化
文章目录 系统类汉化简介标签说明汉化系统包说明效果展示类分类%Library包下的类重点类非重点类弃用类数据类型类工具类 使用说明 系统类汉化 简介 帮助小伙伴更加容易理解后台系统程序方法使用,降低代码的难度。符合本土化中文环境的开发和维护,有助于…...

【三维生成】稀疏重建、Image-to-3D方法(汇总)
系列文章目录 总结一下近5年的三维生成算法,持续更新 文章目录 系列文章目录一、LRM:单图像的大模型重建(2023)摘要1.前言2.Method3.实验 二、SSDNeRF:单阶段Diffusion NeRF的三维生成和重建(ICCV 2023&am…...

Java基础知识:单元测试和调试技巧
在Java编程中,单元测试和调试是提高代码质量和开发效率的重要环节。通过单元测试,我们可以验证代码的正确性,而调试则帮助我们找出并修复代码中的错误。本文将介绍Java中的单元测试和调试技巧,并提供相关示例代码,帮助…...

[c]扫雷
题目描述 扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。 玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中…...

数据结构-十大排序算法
数据结构十大排序算法 十大排序算法分别是直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序、外部排序。 其中插入排序包括直接插入排序、折半插入排序、希尔排序;交换排序包括冒泡排序、快速排序࿱…...

Apache RocketMQ,构建云原生统一消息引擎
本文整理于 2023 年云栖大会林清山带来的主题演讲《Apache RocketMQ 云原生统一消息引擎》 演讲嘉宾: 林清山(花名:隆基),Apache RocketMQ 联合创始人,阿里云资深技术专家,阿里云消息产品线负…...

(四) ClickHouse 中使用 `MaterializedMySQL` 引擎单独同步 MySQL 数据库中的特定表(例如 `aaa` 和 `bbb`)
要在 ClickHouse 中使用 MaterializedMySQL 引擎单独同步 MySQL 数据库中的特定表(例如 aaa 和 bbb),您可以使用 TABLE OVERRIDE 功能。这个功能允许您指定要同步的特定表,同时忽略其他表。以下是步骤说明: 1. 启用 M…...

TikTok真题第4天 | 1366. 通过投票对团队排名、1029.两地调度、562.矩阵中最长的连续1线段
1366. 通过投票对团队排名 题目链接:rank-teams-by-votes/ 解法: 这道题就是统计每个队伍在每个排名的投票数,队伍为A、B、C,则排名有1、2、3,按照投票数进行降序排列。如果有队伍在每个排名的投票数都一样…...

时序预测 | Matlab实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络时间序列预测
时序预测 | Matlab实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短…...

负载均衡——Ribbon
文章目录 Ribbon和Eureka配合使用项目引入RibbonRestTemplate添加LoadBalanced注解注意自定义均衡方式代码注册方式配置方式 Ribbon脱离Eureka使用 Ribbon,Nexflix发布的负载均衡器,有助于控制HTTP和TCP客户端的行为。基于某种负载均衡算法(轮…...

7.微服务设计原则
1.微服务演进策略 从单体应用向微服务演进策略: 绞杀者策略,修缮者策略的另起炉灶策略; 绞杀者策赂 绞杀者策略是一种逐步剥离业务能力,用微服务逐步替代原有单体应用的策略。它对单体应用进行领域建模,根据领域边界࿰…...

【MATLAB库函数系列】线性调频Z(Chirp-Z,CZT)的MATLAB源码和C语言实现
在上一篇博客 【数字信号处理】线性调频Z(Chirp-Z,CZT)算法详解 已经详细介绍了CZT变换的应用背景和原理,先回顾一下: 回顾CZT算法 采用 FFT 算法可以很快计算出全部 N N N点 DFT 值,即Z变换 X ( z ) X(z) <...

BIT-6-指针(C语言初阶学习)
1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 1. 指针是什么? 指针是什么? 指针理解的2个要点: 指针是内存中一个最小单元的编号,也就是地址平时口语中说的指针,通常…...

傻瓜式教学Docker 使用docker compose部署 php nginx mysql
首先你可以准备这个三个服务,也可以在docker compose 文件中 直接拉去指定镜像,这里演示的是镜像服务已经在本地安装好了,提供如下: PHP # 设置基础镜像 FROM php:8.2-fpm# install dependencies RUN apt-get update && apt-get install -y \vim \libzip-dev \libpng…...

node express简单微服务
首先,安装所需的依赖项,可以使用npm或yarn进行安装: $ npm install express axios接下来,创建一个名为service1.js的文件,用于实现第一个微服务: const express require(express); const axios require…...

nginx-proxy-manager初次登录502 bad gateway
nginx-proxy-manager初次登录502 bad gateway 按照官方docker-compose安装后,页面如下: 默认账户密码: adminexample.com/changeme点击sign in,提示Bad Gateway 打开调试 重装后依然如此,最后查阅githup issue 找到答案 https://github.com/NginxProxyManager/nginx-proxy-…...

Servlet见解2
4 创建servlet的三种方式 4.1 实现Servlet接口的方式 import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException;WebServlet("/test1") public class Servlet1 implements Servlet {Overridepublic void init(ServletConf…...

【SpringCloud】-OpenFeign实战及源码解析、与Ribbon结合
一、背景介绍 二、正文 OpenFeign是什么? OpenFeign(简称Feign)是一个声明式的Web服务客户端,用于简化服务之间的HTTP通信。与Nacos和Ribbon等组件协同,以支持在微服务体系结构中方便地进行服务间的通信;…...

走进数字金融峰会,为金融科技数字化赋能
12月20—21日,FSIDigital数字金融峰会在上海圆满召开。本次峰会包含InsurDigital数字保险峰会和B&SDigital数字银行与证券峰会2场平行峰会;吸引了近600位来自保险、银行、证券以及金融科技等行业的领导者和专家齐聚一堂,共同探讨金融业数…...

docker-compose部署kafka
docker-compose.yml配置 version: "3" services:kafka:image: bitnami/kafka:latestports:- 7050:7050environment:- KAFKA_ENABLE_KRAFTyes- KAFKA_CFG_PROCESS_ROLESbroker,controller- KAFKA_CFG_CONTROLLER_LISTENER_NAMESCONTROLLER- KAFKA_CFG_LISTENERSPLAIN…...