首頁 >資料庫 >mysql教程 >flyway的使用

flyway的使用

WBOY
WBOY原創
2016-06-07 14:50:122449瀏覽

在频繁的工程实践中,服务端程序与数据库不断的更新,如果服务端和数据库部署不一致,经常性的会导致各种问题。为了解决这一问题,可行的方案之一就是让数据库随着服务端的版本而更新,flyway就是一种解决方案。 一. 目的 管理数据库更新。 二.方法 直接在ja

在频繁的工程实践中,服务端程序与数据库不断的更新,如果服务端和数据库部署不一致,经常性的会导致各种问题。为了解决这一问题,可行的方案之一就是让数据库随着服务端的版本而更新,flyway就是一种解决方案。


一. 目的

管理数据库更新。

二.方法

直接在java工程中嵌入sql脚本。工程重新部署时,会自动更新数据库,保证数据库与代码同步,避免了手动更新数据库带来的弊病。

三.原理

在数据库中创建了一个表schema_version,该表的最后记录为当前数据库版本。

四.步骤

1.在pom文件中加入如下:

dependency>

  groupId>org.flywaydbgroupId>

 artifactId>flyway-coreartifactId>

 version>3.2.1version>

 dependency>

2.在dispatcher-servlet.xml中加入

bean id="flyway" class="org.flywaydb.core.Flyway" depends-on="dataSource" lazy-init="false"  init-method="migrate">

 property name="dataSource" ref="dataSource"/>

 property name="initOnMigrate" value="true" />

 property name="validateOnMigrate" value="false" />

 bean>

同时让其它数据库操作bean依赖于flyway这个bean,避免数据库未升级完毕已经进行数据库操作。

 

bean id="hibernate4AnnotatedSessionFactory"

 

 class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"  depends-on="flyway">

bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"  depends-on="flyway">

3.在resources下建立数据库脚本升级目录,请注意脚本命名方式

五.注意

1.flyway不支持回滚,如果你增加了一个字段,然后又要删除这个字段,就只能写一个V2_6_0_1__Delete_new_like_Column.sql的脚本。

2.一旦使用flyway,就不要使用手动方式修改数据库,同时不得删除schema_version中数据。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn