In meinem Projekt verwende ich Flyway-Core (6.4.4) für meine Migrationen und für meine Tests eine H2-in-memory Datenbank (2.2.224).
Ich will nämlich in meiner in-memory Datenbank für meine Tests die exakt gleiche Datenbank- und Tabellenstruktur wie im Produktivsystem. Und ich will das natürlich nicht für jede Testklasse manuell aufziehen. Vor allem, weil bei Änderungen diese manuell nachgezogen werden müssten.
Also dachte ich, ich verwende die Flyway-Migrationen dafür.
Sobald ich auf meine Flyway-Instanz zugreifen möchte (also bei flyway.clean()) fliegt er raus und gibt mir die Exception:
Und sie hilft mir einfach absolut gar nicht. Es scheint Probleme mit irgendwelchen Queries von H2 oder Flyway zu geben. Alles googlen hat mir nichts gebracht oder ich habe nicht genug Verständnis von dem Ganzen, um die Lösung zu erkennen, wenn ich sie lese.
Ich hoffe es gibt hier jemdenn, der weiß, was man da tun muss.
Ich will nämlich in meiner in-memory Datenbank für meine Tests die exakt gleiche Datenbank- und Tabellenstruktur wie im Produktivsystem. Und ich will das natürlich nicht für jede Testklasse manuell aufziehen. Vor allem, weil bei Änderungen diese manuell nachgezogen werden müssten.
Also dachte ich, ich verwende die Flyway-Migrationen dafür.
Java:
FluentConfiguration fluentConfiguration = Flyway.configure()
.dataSource(url, user, password)
try {
Flyway flyway = fluentConfiguration.load();
flyway.clean(); //Hier fliegt er raus
flyway.migrate();
System.out.println("Migration complete");
} catch (FlywayException exception) {
//Exception
}
Sobald ich auf meine Flyway-Instanz zugreifen möchte (also bei flyway.clean()) fliegt er raus und gibt mir die Exception:
Code:
org.flywaydb.core.internal.exception.FlywaySqlException:
Unable to determine H2 compatibility mode
-----------------------------------------
SQL State : 42001
Error Code : 42001
Message : Syntax error in SQL statement "SELECT [*]VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME = 'MODE'"; expected "TOP, DISTINCT, ALL, *, INTERSECTS, NOT, EXISTS, UNIQUE, INTERSECTS"; SQL statement:
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME = 'MODE' [42001-212]
Und sie hilft mir einfach absolut gar nicht. Es scheint Probleme mit irgendwelchen Queries von H2 oder Flyway zu geben. Alles googlen hat mir nichts gebracht oder ich habe nicht genug Verständnis von dem Ganzen, um die Lösung zu erkennen, wenn ich sie lese.
Ich hoffe es gibt hier jemdenn, der weiß, was man da tun muss.