PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

BeanCreationException:Fehler beim Erstellen einer Bean mit dem Namen „flywayInitializer“

Es sieht so aus, als ob der Testcontainer mit der Datenbank erfolgreich gestartet wurde, also kein Problem, Sie erhalten eine leere Datenbank.

Dann versuchen Sie, den Flyway auszuführen, und dies schlägt fehl. Flyway im Spring Boot funktioniert während der Initialisierung des Spring-Anwendungskontexts, sodass die eigentliche Migration ausgeführt wird, während der Anwendungskontext initialisiert wird, sodass der Migrationsfehler wie ein Spring-Fehler aussieht.

Der Grund wird jedoch protokolliert:Die Migrationsdatei hat einen ungültigen Inhalt:

Migration V1__initial_user.sql failed
-------------------------------------
SQL State  : 42601
Error Code : 0
Message    : ERROR: syntax error at or near "GENERATED"
 Position: 45
Location   : db/migration/V1__initial_user.sql (/Users/villemossip/Desktop/GRP/GRP- 
SAS/application/build/resources/main/db/migration/V1__initial_user.sql)
Line       : 36
Statement  : CREATE TABLE revinfo
(
   rev      INTEGER GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ),
   revtstmp BIGINT,
   PRIMARY KEY (rev)
)

Dieser GENERATED BY wird nicht unterstützt.

Wieso den? Wahrscheinlich enthält Ihr Docker-Image die Version von RDBMS, die diese Syntax nicht unterstützt. Es unterscheidet sich also von der DB, die Sie in einer lokalen Umgebung ohne Docker verwenden.

Auf jeden Fall geht es nicht um Docker, Spring oder Flyway, sondern um die DB und den Migrationscode.

In Bezug auf die Auflösung schlage ich vor, das Docker-Image der DB direkt auszuführen (ohne Java, Testcontainer und Flyway). Wenn es läuft, führen Sie diese Migration einfach "manuell" in pgadmin oder so aus. Es wird erwartet, dass Sie denselben Fehler sehen.