2015-11-04 24 views
5

我正在使用flyway命令行工具來處理我的db遷移。 到目前爲止所有遷移都是SQL如何構建基於java的遷移路線

配置文件(僅用於選項):

flyway.url=jdbc:postgresql://db.host 
flyway.user=user 
flyway.password=password 

flyway.table=flyway_migrations 

flyway.locations=filesystem:/home/........./sql/migrations 

flyway.sqlMigrationPrefix=update 
flyway.validateOnMigrate=false 
flyway.outOfOrder=true 

完美的作品。

但現在我需要添加一個基於Java的遷移。我真的很困惑 我找不到任何todo的例子。如何編譯,在哪裏把Java遷移。

我試着簡單遷移類從官方文檔:

package db.migration; 

import org.flywaydb.core.api.migration.jdbc.JdbcMigration; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 

/** 
* Example of a Java-based migration. 
*/ 
public class V50_121_1__update_notes implements JdbcMigration { 
    public void migrate(Connection connection) throws Exception { 
     PreparedStatement statement = 
      connection.prepareStatement("INSERT INTO test_user (name) VALUES ('Obelix')"); 

     try { 
      statement.execute(); 
     } finally { 
      statement.close(); 
     } 
    } 
} 

但接下來做什麼? 嘗試編譯:

javac -cp "./flyway-core-3.2.1.jar" V50_121_1__update_notes.java 
jar cf V50_121_1__update_dataNode_notes.jar V50_121_1__update_dataNode_notes.class 

然後把那個罐子到不同的位置,沒有任何效果。

飛路信息 - 看不到遷移。

那麼如何構建最簡單的基於java的遷移。我寧願不使用Maven或類似的東西。只是由flyway命令行工具拾取的簡單jar文件(???)。

謝謝。

回答

1

確保您的.class文件位於.jar文件文件內的db/migration目錄中,並且.jar文件位於您的Flyway安裝的/ jars目錄中。

flyway.locations也應該設置爲db.migration,filesystem:/ home /.../sql/ migrations

+0

謝謝。添加db.migration到位置,這是我錯過 –

+0

@Vadym科瓦連科也面臨類似的問題,你能幫助我請。我已經將db/migration添加到flyway.locations中,並且將jar文件放置在jar文件夾中但是仍面臨同樣的錯誤「無法掃描位置中的SQL遷移:classpath:db/migration」,請讓我知道你是否需要任何其他細節 –

+0

@AdarshHDDev在類路徑中的jar文件中的sql和/或類文件 - db/migration? –