zoukankan      html  css  js  c++  java
  • Flyway记录

    Flyway

    是什么:如果说git是代码的版本控制,那么flyway就是数据库的版本控制

    解决问题:

    • 正如git解决协作开发的问题,flyway一样解决了多人协同设计数据库的问题
    • 修改或修复数据库结构
    • 修复错误数据

    竞品:Liquibase(https://www.liquibase.org/

    工作方式(https://flywaydb.org/getstarted/how),官网上有相关的图片介绍:

    基本上应用方式:

    1、增加表结构,这边建议分开DDL和DML,默认在 这个目录:db/migration(可以通过FlywayProperties的location值覆盖实现,在spring boot yml文件中一般是这样)

    flyway:
      locations:
        - db/migration
        - db/ddl

    2、修复错误的表结构或数据,注意文件的格式是 前缀__版本号__描述.后缀,一般是这样的

    V1_init_db.sql

    最近面试官有问到V可不可以用别的替代

    首先,可以改。通过配置覆盖,具体字段就不再描述了,很容易从配置类里面找到

    其次,可以用默认的R,表示可以重复执行,可以用于清除数据库的缓存数据或者常规产生的过期数据等

    其他一些常见的配置参数

    flyway.baseline-description对执行迁移时基准版本的描述.
    flyway.baseline-on-migrate当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
    flyway.baseline-version开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
    flyway.check-location检查迁移脚本的位置是否存在,默认false.
    flyway.clean-on-validation-error当发现校验错误时是否自动调用clean,默认false.
    flyway.enabled是否开启flywary,默认true.
    flyway.encoding设置迁移时的编码,默认UTF-8.
    flyway.ignore-failed-future-migration当读取元数据表时是否忽略错误的迁移,默认false.
    flyway.init-sqls当初始化好连接时要执行的SQL.
    flyway.locations迁移脚本的位置,默认db/migration.
    flyway.out-of-order是否允许无序的迁移,默认false.
    flyway.password目标数据库的密码.
    flyway.placeholder-prefix设置每个placeholder的前缀,默认${.
    flyway.placeholder-replacementplaceholders是否要被替换,默认true.
    flyway.placeholder-suffix设置每个placeholder的后缀,默认}.
    flyway.placeholders.[placeholder name]设置placeholder的value
    flyway.schemas设定需要flywary迁移的schema,大小写敏感,默认为连接默认的schema.
    flyway.sql-migration-prefix迁移文件的前缀,默认为V.
    flyway.sql-migration-separator迁移脚本的文件名分隔符,默认__
    flyway.sql-migration-suffix迁移脚本的后缀,默认为.sql
    flyway.tableflyway使用的元数据表名,默认为schema_version
    flyway.target迁移时使用的目标版本,默认为latest version
    flyway.url迁移时使用的JDBC URL,如果没有指定的话,将使用配置的主数据源
    flyway.user迁移数据库的用户名
    flyway.validate-on-migrate迁移时是否校验,默认为true.
  • 相关阅读:
    Vue
    Vue
    Vue
    服务器上部署django项目流程?
    Git 命令
    git命令?
    消息队列中间件??
    简述COOKIE和SESSION的区别与联系?
    什么是restful API?
    Django、Flask、Tornado的区别?
  • 原文地址:https://www.cnblogs.com/gabin/p/13503865.html
Copyright © 2011-2022 走看看