热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Flyway]dataMigration01

DatabaseMigrationTools数据库修改历史数据迁移到新表数据库实例的切换手动执行的问题:securityconflict数据库环境隔离环境问题1.1FlywayVe

Database Migration Tools

数据库修改/历史数据迁移到新表/数据库实例的切换



手动执行的问题: security/conflict/数据库环境隔离/环境问题


1.1 Flyway

Version control for your database


1.1.1 脚本类型

按照文件名进行分类:



  • v数字__Add_new_table : versioned migrations 升级脚本,只执行一次,成功后不能修改



  • r数字__Add_new_table: repeatable migrations 可重复执行,执行成功后可以修改,修改后会再次执行



eg: v1__description, r1__description , flyway_schema_history会通过名称来分割出类型、版本、描述创建到表中

脚本执行后,数据库中会创建一张新表 flyway_schema_history用来记录对数据库的操作。


1.2 基本命令

先在build.gradle文件中配置flyway的插件,然后在此配置中加上flyway对数据库的配置信息。 在resource文件夹下创建文件夹db.migration,用来放置flyway脚本。

plugins {
id "org.flywaydb.flyway" version "..."
}
flyway {
url='...'
user='...'
password='...'
}

1.2.1 使用./gradlew flywayMigrate -i

来执行新的配置文件


1.2.2 ./gradlew flywayInfo

展示每一个脚本的分类,版本,描述和状态


1.2.3 ./gradlew flywayValidate

展示当前对数据库的操作和flyway的配置文件的哈希值有什么不同


1.2.4 ./gradlew flywayBaseline

把当前数据库init为由flyway管理的数据库,类似于git init

但是当初始化为flyway托管之后,新添加的flyway脚本需要修改为v2开始,baseline的版本为1,并且计算哈希值的checksum为null,当有v1脚本时无法进行对比计算。


12.5 ./gradlew flywayRepair

当前: 有v1, v2执行成功;v3写错了但flywayMigrate的时候build failed,

做:修改了v3 为正确的脚本再migrate的时候依然会执行不成功,因为checksum值不同。

可以:可以repair之后再执行修改后的migrate命令。repair相当于先清空v3的第一次执行记录,并更新有变化的脚本信息如checksum(在flyway_schema_history表中)

推荐手动删除 drop 表中的最后一条数据(通过version号)


1.2 Strategy



  • 执行脚本后想修改脚本的方法: 新增一个补丁



  • 与服务器中的版本冲突: 拉去代码前检查服务器中其他人新增的版本号,解决冲突



  • 本地数据库和开发环境测试数据库类型/版本号尽量保持一致



  • 保持脚本的原子性,如果一个脚本中两条数据,一条成功一条失败,建议自己手动删除第一条脚本的执行结果,删除flywayHistory表中的执行数据并更新脚本重新执行





推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
author-avatar
-而我知道阿信很忙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有