iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么把数据库变更
  • 600
分享到

怎么把数据库变更

2024-04-02 19:04:59 600人浏览 八月长安
摘要

这篇文章主要介绍“怎么把数据库变更”,在日常操作中,相信很多人在怎么把数据库变更问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么把数据库变更”的疑惑有所帮助!接下来,请跟着

这篇文章主要介绍“怎么把数据库变更”,在日常操作中,相信很多人在怎么把数据库变更问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么把数据库变更”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

经过千难万险的开发,系统终于上线了,进入了更加惊险刺激的捉虫阶段。在修修补补之中,给后人留下一堆屎山之前,我们需要把数据库给整利索了。

想想吧,我们在开发环境,修改了多个字段的名称,经历了测试环境的洗礼,还搞了个预上线接受变更。结果,仅仅在线上忘了操作其中一条sql,就前功尽弃。如果你做的是项目类型的工作,客户半年六个月才升级一次,这些脚本的管理就会乱上加乱。

我们需要把这些数据库变更,使用git这样的工具管理起来,在系统启动的时候,能够自动变更。通过口口相传,太不可信了。

谁也不想背这个锅。翻聊天记录?有用么?都是事后诸葛亮。

人和动物的区别,就是使用工具。经常被使用的两个,有Liquibase和Flyway。但是,Liquibase的迁移脚本写起来太复杂,需要花很多时间维护,远不如Flyway这样的开箱即用(牺牲跨平台)。如果你的项目不是非常复杂,对Liquibase也不熟悉,建议直接选用flyway。

一般,数据库变更,会有下面几种语句,我们都可以使用flyway来完成。

  • DDL 建表和索引的时候,用到的语句,比如CREATE、ALTER、DROP等

  • DML 就是一些常见的数据操作语句,比如update、delete、insert

  • DCL 用来设置和管理权限方面信息的语句,比如grant、deny、revoke等

下面,就以flyway为例,来看一下数据库的版本,是如何变更的。

1. flyway migrate

怎么把数据库变更

首先,使用mvn的命令,创建一个示范项目。

mvn archetype:generate -B \ -DarchetypeGroupId=org.apache.Maven.archetypes \     -DarchetypeArtifactId=maven-archetype-quickstart \     -DarchetypeVersion=1.1 \     -DgroupId=foo \     -dartifactId=bar \     -Dversion=1.0-SNAPSHOT \     -Dpackage=foobar

在pom.xml文件中加入下面的内容:

<build>     <plugins>         <plugin>             <groupId>org.flywaydb</groupId>             <artifactId>flyway-maven-plugin</artifactId>             <version>7.3.1</version>             <configuration>                 <url>jdbc:h3:file:./target/foobar</url>                 <user>sa</user>             </configuration>             <dependencies>                 <dependency>                     <groupId>com.h3Database</groupId>                     <artifactId>h3</artifactId>                     <version>1.4.200</version>                 </dependency>             </dependencies>         </plugin>     </plugins> </build>

创建数据库变更目录。

mkdir -p src/main/resources/db/migration

创建新的数据库文件,我们把它叫做第一个版本:src/main/resources/db/migration/V1__Create_person_table.sql

create table PERSON (     ID int not null,     NAME varchar(100) not null );

使用mvn命令,即可完成数据库更新。不要怕,这个命令是幂等的。

mvn flyway:migrate

终端将输出下面的内容:

[INFO] Database: jdbc:h3:file:./target/foobar (H2 1.4) [INFO] Successfully validated 1 migration (execution time 00:00.009s) [INFO] Creating Schema History table: "PUBLIC"."flyway_schema_history" [INFO] Current version of schema "PUBLIC": << Empty Schema >> [INFO] Migrating schema "PUBLIC" to version 1 - Create person table [INFO] Successfully applied 1 migration to schema "PUBLIC" (execution time 00:00.038s)

下面,我们准备第二个变更,同样的,我们创建第二版本的文件:src/main/resources/db/migration/V2__Add_people.sql

下面是SQL文件的内容:

insert into PERSON (ID, NAME) values (1, 'Axel'); insert into PERSON (ID, NAME) values (2, 'Mr. Foo'); insert into PERSON (ID, NAME) values (3, 'Ms. Bar');

再次执行mvn flyway:migrate,可以发现第二版本的DML信息,已经被写入到数据库。

2. 如何工作?

那flyway是如何做到幂等的呢?我们使用DBeaver来打开这个h3文件。

怎么把数据库变更

在JDBC连接处,输入:jdbc:h3:/private/tmp/bar/target/foobar.mv.db;然后选择H2  Embedded模式。我们发现,数据库中除了用户创建的PERSON表,还多了一个叫做flyway_schema_history的表。

让我们see一see里面的内容。使用mvn flyway:info命令,能看到相同的内容。

怎么把数据库变更

可以看到,这个幂等操作,其实是由一张自动创建的状态表,来保证的。里面还躺着一个叫做checksum的字段,李曼存储的是一个CRC32值,用来判断你的SQL文件是否经过了非法篡改(篡改后将不予通过)。

捅破了这层窗户纸,一切神奇的事情忽然就变得豁然开朗。所以如果你想要用flyway,你的账户,应该起码给create  table的权限,否则你就需要手动建这种表。

怎么把数据库变更

从上面的SQL文件定义,也可以看出来,这些文件,需要遵循一定的规律。大体如上图所示,包含:

  1. 前缀

  2. 版本号

  3. 分隔符

  4. 版本描述

flyway就是靠这种约定,来进行库表变更的。所以,要严格按照它的要求去命名Sql文件。

3. SpringBoot项目集成

在pom中加入flyway的坐标。可以看到我们是没有提供版本号的,说明它已经在bom文件中定义过了。而它的autoconfigure,在SpringBoot的autoconfigure包里面默认提供了。

<dependencies>       <dependency>          <groupId>org.flywaydb</groupId>          <artifactId>flyway-core</artifactId>       </dependency>       ... </dependencies>

我们当然要看一下FlywayProperties这个文件所定义的配置项。可以看到它的前缀,就是spring.flyway。

怎么把数据库变更

默认的DB变更文件,放在classpath:db/migration,我们也可以通过locations配置自定义一个,比如classpath:cn/xjjdog/flyway。当然,也可以通过table属性,定义那张his表的名称。url、user、passWord这些,也可以提供,把his表存储在和业务表不一样的地方。如果不提供,将默认使用datasource所定义的库。

所以,最小配置,就是什么都不做,直接把变更文件,扔在变更目录下面就可以了。

spring:    datasource:        # jdbc配置... flyway:     enable: true     locations: classpath:cn/xjjdog/flyway

到此,关于“怎么把数据库变更”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么把数据库变更

本文链接: https://www.lsjlt.com/news/61942.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么把数据库变更
    这篇文章主要介绍“怎么把数据库变更”,在日常操作中,相信很多人在怎么把数据库变更问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么把数据库变更”的疑惑有所帮助!接下来,请跟着...
    99+
    2024-04-02
  • php如何把修改数据更新回数据库
    要把修改的数据更新回数据库,可以使用PHP中的UPDATE语句。首先,你需要连接到数据库。可以使用mysqli或PDO等PHP扩展来...
    99+
    2023-08-17
    php 数据库
  • 数据库怎么把数据改为空值
    在数据库中,可以使用以下方法将数据改为空值:1. 使用UPDATE语句:可以使用UPDATE语句将数据改为空值。例如,假设有...
    99+
    2023-09-05
    数据库
  • navicat怎么把数据库导入
    使用 navicat 导入数据库的步骤:连接到目标数据库服务器。创建新数据库或选择现有数据库。单击“导入”按钮,从文件中导入数据。预览导入数据并点击“开始”按钮执行导入。 如何使用 N...
    99+
    2024-04-06
    navicat
  • Android怎么把正确的把数据插入到数据库中
    这篇文章主要讲解了“Android怎么把正确的把数据插入到数据库中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么把正确的把数据插入到数据库...
    99+
    2024-04-02
  • 怎么把数据库放入阿里云库
    简介 在数字化时代,数据的重要性不言而喻。随着企业业务的发展和数据量的增长,传统的本地数据库已经无法满足需求。将数据库放入阿里云库是一种高效、安全、可靠的选择,本文将详细介绍为什么要选择阿里云库,并介绍如何进行操作。为什么选择阿里云库?高性...
    99+
    2024-01-18
    阿里 放入 数据库
  • navicat怎么把数据库导出来
    如何使用 navicat 导出数据库?具体步骤包括:1. 连接到数据库;2. 选择“导出向导”工具;3. 选择导出选项:导出类型、数据库、架构、表;4. 配置导出设置:文件格式、导出范围...
    99+
    2024-04-24
    navicat
  • php怎么把变量变成数组
    PHP是一种广泛使用的编程语言,它在处理数据方面非常强大,处理数组更是得心应手。在PHP中,变量可以通过简单的方法转换为数组,此功能非常实用,特别是在处理一组数据时。在本文中,我们将介绍如何将PHP变量转换为数组,并提供一些常见的用例。1....
    99+
    2023-05-22
  • 怎么把数据库导入到phpmyadmin中
    这篇文章主要介绍了怎么把数据库导入到phpmyadmin中,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。打开phpMyadmin输入账号和密码,...
    99+
    2024-04-02
  • navicat premium怎么把数据库导出来
    使用 navicat premium 导出数据库的步骤如下:连接到数据库并右键单击数据库名称,选择“导出向导”。选择导出格式。指定导出文件保存位置和文件名。选择要导出的表或视图。配置导出...
    99+
    2024-04-06
    navicat
  • c#怎么把图片存入数据库
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • 变更OS时间对数据库有什么影响
    今天就跟大家聊聊有关变更OS时间对数据库有什么影响,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 本文:说明提供了操作系统日期变更对数据库、应用程...
    99+
    2024-04-02
  • 怎么把AS3连接到MySQL数据库上
    这篇文章主要介绍“怎么把AS3连接到MySQL数据库上”,在日常操作中,相信很多人在怎么把AS3连接到MySQL数据库上问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么把A...
    99+
    2024-04-02
  • nodejs怎么把buffer变成数字
    Buffer是Node.js中用于处理二进制数据的对象。它可以在读写网络数据、文件操作、加密算法等场景下发挥重要作用。在处理二进制数据的过程中,我们有时需要将Buffer类型转换为其他类型,比如数字类型。本文将介绍如何将Buffer类型转换...
    99+
    2023-05-23
  • md5怎么把数据库的信息加密
    在mysql数据库中使用md5算法对信息进行加密,具体方法如下:首先,在mysql数据库中新建一个test表;CREATE TABLE test (`id` int(11) NOT NULL AUTO_INCREMENT,`name` va...
    99+
    2024-04-02
  • r语言怎么把一行数据变成多行
    在R语言中,可以使用`pivot_longer()`函数将一行数据转换为多行。该函数是tidyverse包中的一部分,用于对数据进行...
    99+
    2023-10-26
    r语言
  • 怎么把数据库从MySQL移植到MemSQL
    本篇内容主要讲解“怎么把数据库从MySQL移植到MemSQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么把数据库从MySQL移植到MemSQL”吧!因为 ...
    99+
    2024-04-02
  • PHP与数据库变更管理的集成
    随着Web应用程序规模和复杂性的增加,数据库变更管理成为Web开发中不可忽视的一项任务。数据库变更管理是数据库开发的核心任务之一,它指的是对数据库的结构进行更改,并确保更改不会影响应用程序的正常运行。在Web应用程序开发中,PHP与数据库变...
    99+
    2023-05-15
    数据库 PHP 变更管理
  • 通过Navicat把MySQL远程数据库导入到本地数据库(持续更新)
    前提:先安装好MySQL、Navicat。 打开Navicat,新建连接,连接名由自己取,我取的是localhost,如下填写好各项信息,测试连接,连接成功。那本地数据库就建好了。看下一步 在localhost下新建目标数据库,写好数据库...
    99+
    2023-09-05
    数据库 mysql java
  • java怎么监听数据库表数据变化
    在Java中监听数据库表数据变化可以通过以下几种方式实现:1. 使用JDBC的数据库触发器:使用JDBC连接数据库,注册相应的触发器...
    99+
    2023-09-27
    java 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作