2015-11-04 14 views
5

Utilizzo lo strumento della riga di comando flyway per gestire le mie migrazioni di db. Fino ad ora tutte le migrazioni sono sqlCome creare migrazioni flyway basate su flyway

file di configurazione (solo le opzioni utilizzate):

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 

che funziona perfettamente.

Ma per ora ho bisogno di aggiungere una migrazione basata su Java. E sono davvero perplesso Non riesco a trovare alcun esempio di How todo. Come compilare, dove inserire le migrazioni java.

Ho provato semplice la migrazione di classe da documentazione ufficiale:

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(); 
     } 
    } 
} 

Ma cosa fare dopo? compilazione provato:

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 

E poi mettere quel vaso in posizioni diverse, non hanno alcun effetto.

info flyway - non vedere la migrazione.

Quindi, come creare la migrazione più semplice basata su java. Preferirò non usare Maven, o qualcosa di simile. Semplice file jar (???) che viene raccolto dallo strumento da riga di comando flyway.

Grazie.

risposta

1

Assicurati che il file .class si trovi in ​​una directory db/migrazione all'interno del file .jar e che il tuo file .jar sia inserito nella directory/jars delle installazioni Flyway.

flyway.locations dovrebbero essere impostati su db.migration, filesystem:/home /........./ sql/migrazioni

+0

Grazie. Aggiungendo db.migration alle posizioni, questo è quello che mi mancava –

+0

@Vadym Kovalenko sto affrontando anche un problema simile, sareste in grado di aiutarmi per favore. Ho aggiunto il db/migrazione in flyway.locations e il file jar è collocato all'interno delle cartelle jar Ma sto ancora affrontando lo stesso errore "Impossibile eseguire la scansione per migrazioni SQL in posizione: classpath: db/migration", per favore fatemi sapere se bisogno di altri dettagli –

+0

@AdarshHDDev Fa sql e/o file di classe all'interno del file jar situato all'interno di classpath - db/migration? –

Problemi correlati