`
lp895876294
  • 浏览: 279914 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

数据库文件版本管理工具flyway

    博客分类:
  • DB
 
阅读更多

flyway 是一个敏捷工具,用于数据库的移植。采用 Java 开发,支持所有兼容 JDBC 的数据库。

主要用于在你的应用版本不断升级的同时,升级你的数据库结构和里面的数据。

官方网站:http://flywaydb.org/

支持俩种模式迁徙:

1、基于sql文件迁徙:http://flywaydb.org/documentation/migration/sql.html

2、基于java文件迁徙:http://flywaydb.org/documentation/migration/java.html

在项目中我们的使用方式为:

1.数据表的完整性由JPA完成,不能手动的执行字段更新及删除操作。

2.数据初始化、限制的维护由flyway完成。

 

可以以spring管理flyway框架,或者说相结合。

在项目源码包中:

路径为 :db/migration   【如果不喜欢可以自己根据配置来命名位置】

命名规范:

1、前缀(可配置,默认值:V)

2、版本(以点或下划线区分开来,只要你喜欢,你可以使用很多地方)

3、分隔符(两个下划线)

4、描述(下划线或空格分开)

5、后缀(可配置,默认情况下:SQL)

 

与spring管理配置

 

[html] view plaincopy
 
  1. <bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">  
  2.     <property name="dataSource" ref="..."/>  
  3.     ...  
  4. </bean>  
  5.   
  6. <!-- The rest of the application (incl. Hibernate) -->  
  7. <!-- Must be run after Flyway to ensure the database is compatible with the code -->  
  8. <bean id="sessionFactory" class="..." depends-on="flyway">  
  9.     ...  
  10. </bean>  



 

把dataSource 配置你的dataSource 、sessionFactory 依赖flyway就可以了。

关于flyway 的bean 里的init-method 方法。

第一次可能需要你改为init方法 初始化 schema_version表。

之后改为migrate就可以了。

 

注意:flyway不支持版本回滚。(需手动,比较悲剧的一点)

 

以后数据多改栏位、或者类型的就不用来回通知研发人员了。

直接写个版本sql文件就可以了,项目启动时候会查看哪个执行过哪个没执行。

flyway直接会往高版本迁徙。

 

flyway其他参考网址:

http://casheen.iteye.com/blog/1749916

http://shuzheng5201314.iteye.com/blog/2044517

 

分享到:
评论
1 楼 qiwei31229 2017-03-21  
楼主,你好问下,这种情况使用flyway要怎么处理,
假设用flyway执行脚本的时候,表设置了id唯一,但是插入的时候,如果id冲突了,脚本执行就会报错,要怎么处理?

相关推荐

    Flyway数据库迁移工具详解.docx

    Flyway 就是用来解决像这样的数据库迁移的工具,接入了 Flyway 过后,在数据库中会生成一张默认名为flyway_schema_history 的数据表,用来追踪数据库的变化。程序启动的时候 Flyway 都会在文件系统或者 classpath ...

    基于SpringBoot+Vue+MySQL实现的可拖拽编辑可视化数据大屏设计工具源码+数据库+项目部署文档

    多数据源支持,内置mysql、elasticsearch、...系统初始化时flyway会自动的将该目录下的sql文件执行,不需要手动执行sql文件。 执行完将会创建 aj_report(存放系统基础数据) 和 aj_report_init(存放示例数据) 俩个库

    Embedded-database-spring-test:一个库,用于为Spring集成测试创建隔离的嵌入式数据库

    与Spring TestContext框架自动集成完全支持上下文缓存与Flyway数据库迁移工具无缝集成只需将@FlywayTest批注放置在测试类或方法上优化嵌入式数据库的初始化和清理数据库模板用于减少加载时间使用轻量级的捆绑来减小...

    DevOps流水线之数据库篇

    部分企业在实施DevOps过程中,发现数据库的升级成为企业DevOps流水线上的核心瓶颈,应用程序发布频率越来越快,但是数据库依然采用手工更新的方式,导致数据库升级效率低下、...可以使用Flyway,Evolve,Liquebase等工具

    NullPointerException:一个基于SpringBoot搭建的个人博客系统

    数据库迁移工具:Flyway 模板引擎:Thymeleaf Json:Jackson 数据库:MySQL 缓存:Redis 项目管理工具:Gradle 数据库持久层:MyBaits 其他:lombok 服务器系统:CentOS 服务器:Nginx Servlet容器:Tomcat 结构 ...

    mongobee-example:这旨在显示mongoBee的一些工作示例-一个Java工具,可帮助您管理MongoDB中的更改并将其与应用程序同步

    该概念与其他数据库迁移工具(例如Liquibase或Flyway)非常相似,但不使用XML / JSON / YML文件。 请注意,索引是在后台构建的,以避免将数据库锁定在生产环境中。 变更集 更改日志示例显示: 创建不同类型的索引...

    blockone:样例代码

    RESTFul API实施和持续部署 该示例项目构建了用于学校管理和注册的Restful API。 技术领域 该示例应用程序使用Spring Boot Web构建Restful API。... 数据库文件位于主目录~/unittest.mv 。 当运行Gradle task clea

    Jfinalplugin,angularjfinal-angular-icedog.zip

    并提供akka异步执行集成,多数据源自动orm映射,flyway数据库脚本升级, shiro 权限系统 freemarker-shiro标签支持,以及其他改进 使用angularjs作为前端框架, 以及 bootstrap requireJs+coffeescript+less...

    springboot参考指南

    自定义版本管理 iii. 59.3. 默认排除规则 iv. 59.4. 打包可执行jar和war文件 v. 59.5. 就地(in-place)运行项目 vi. 59.6. Spring Boot插件配置 vii. 59.7. Repackage配置 viii. 59.8. 使用Gradle自定义配置进行...

    elasticsearch-migration:Elasticsearch模式演化库

    一个简单轻巧的Elasticsearch数据库迁移工具,它基于。 Elasticsearch Migration的工作方式与Flyway相似,但是使用yaml文件来描述变更集。 要求 Java(已通过JDK 8+测试) Elasticsearch 6.xx(经过6.2.4+测试。...

    jfinalpluginsjfinal-dreampie.zip

    7.Flyway 数据库自动脚本升级 Plugin,用于自动生成或升级数据库,避免不断使用数据库工具修改数据导致的版本问题 public class FlywayPlugin implements IPlugin { } 8.lesscss compiler plugin,编译...

Global site tag (gtag.js) - Google Analytics