2014-02-26 14 views
5

Ich benutze die Version 2.3 von flyway, ich habe einen SQL-Patch, der einen Varchar in eine Tabelle mit einer Zeichenfolge einfügt, die von Flyway als Platzhalter behandelt wird. Ich möchte die Platzhalter ignorieren und das Skript so ausführen, wie es ist.Wie ignoriert man Platzhalterausdrücke für Flyway?

Die Skriptdatei ist

insert into test_data (value) values ("${Email}");

Und der Java-Code ist

package foobar; 

import com.googlecode.flyway.core.Flyway; 

public class App 
{ 
    public static void main(String[] args) 
    { 
     // Create the Flyway instance 
     Flyway flyway = new Flyway(); 

     // Point it to the database 
     flyway.setDataSource("jdbc:mysql://localhost:3306/flywaytest", "alpha", "beta"); 

     // Start the migration 
     flyway.migrate(); 
    } 
} 
+0

ähnliche: [Deaktivieren Flyway Platzhalter Validation] (https://stackoverflow.com/q/26868233/642706) –

Antwort

5

Sie können den Wert des Platzhalter Suffix oder Präfix auf einen anderen Wert ändern, und Sie sollten in Ordnung sein.

1

Ich hatte genau das gleiche Problem, aber die angenommene Antwort passte nicht meine Anforderungen. Also löste ich das Problem auf andere Weise und poste diese Antwort in der Hoffnung, dass es für andere Leute nützlich sein wird, die von der Google-Suche hierher kommen.

Wenn Sie das Platzhaltersuffix und -präfix nicht ändern können, können Sie Flyway glauben, dass es keine Platzhalter gibt, indem Sie einen Ausdruck verwenden. Beispiel:

INSERT INTO test_data(value) VALUES (REPLACE("#{Email}", "#{", "${")); 

Dies ist nützlich, wenn Sie in vielen früheren Migrationen bereits Platzhalter verwendet haben. (Wenn Sie nur Platzhalter-Suffix und Präfix ändern, müssen Sie sie auch in früheren Migrationsskripten ändern. Aber dann stimmen die Prüfsummen des Migrationsskriptes nicht überein, wird sich Flyway zu Recht beschweren, und Sie müssen Prüfsummen ändern . in der schema_version Tabelle durch Flyway#repair() Aufruf oder manuell in die Tabelle zu verändern)

5

das durch die Spaltung von $ getan werden kann und {im Ausdruck:

insert into test_data (value) values ('$' || '{Email}') 
Verwandte Themen