Heim >Datenbank >MySQL-Tutorial >flyway的使用

flyway的使用

WBOY
WBOYOriginal
2016-06-07 14:50:122450Durchsuche

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:RMAN备份动态性能视图 V$BACKUP_SETNächster Artikel:JDBC(一)