PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

BeanCreationException :erreur lors de la création du bean avec le nom 'flywayInitializer'

Il semble que le conteneur de test avec la base de données ait démarré avec succès, donc pas de problème, vous obtenez une base de données vide.

Ensuite, vous essayez d'exécuter le flyway et cela échoue. Flyway dans le démarrage du printemps fonctionne pendant l'initialisation du contexte d'application du printemps, de sorte que la migration réelle s'exécute pendant que le contexte de l'application est initialisé, de sorte que l'échec de la migration ressemble à un échec du printemps.

La raison, cependant, est consignée :le fichier de migration a un contenu invalide :

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)
)

Ce GENERATED BY n'est pas pris en charge.

Pourquoi? Votre image Docker inclut probablement la version de RDBMS qui ne prend pas en charge cette syntaxe. Il diffère donc de la base de données que vous utilisez dans un environnement local sans docker.

Dans tous les cas il ne s'agit pas de docker, spring ou flyway mais de la DB et du code de migration.

En termes de résolution, je suggère d'exécuter directement l'image docker de la base de données (sans java, testcontainers et flyway). Lorsqu'elle s'exécute, exécutez simplement cette migration "manuellement" dans pgadmin ou quelque chose du genre. Vous devriez voir la même erreur.