Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

[Duda] ERROR EN LA MIGRACION flyway

Hola!, adjunto todo el codigo de error que me arroja al momento de hacer la migracion, espero me puedan ayudar, Agradecida. INFO 17904 --- [ restartedMain] o.f.c.i.database.base.BaseDatabaseType : Database: jdbc:mysql://localhost/vollmed_api (MySQL 8.0) WARN 17904 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Validate failed: Migrations have failed validation Detected failed migration to version 1 (create-table-medicos). Please remove any half-completed changes then run repair to fix the schema history. Need more flexibility with validation rules? Learn more: https://rd.gt/3AbJUZE INFO 17904 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... INFO 17904 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. INFO 17904 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat] INFO 17904 --- [ restartedMain] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. ERROR 17904 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Validate failed: Migrations have failed validation Detected failed migration to version 1 (create-table-medicos). Please remove any half-completed changes then run repair to fix the schema history. Need more flexibility with validation rules? Learn more: https://rd.gt/3AbJUZE at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:313) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.11.jar:6.0.11] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1155) ~[spring-context-6.0.11.jar:6.0.11] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) ~[spring-context-6.0.11.jar:6.0.11] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608) ~[spring-context-6.0.11.jar:6.0.11] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.1.3.jar:3.1.3] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-3.1.3.jar:3.1.3] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:436) ~[spring-boot-3.1.3.jar:3.1.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) ~[spring-boot-3.1.3.jar:3.1.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.3.jar:3.1.3] Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad esta es la continuacion del error.

3 respuestas

Hola Yesenia,

El error está relacionado con una migración fallida en Flyway. La migración a la versión 1 ha fallado (create-table-medicos). Esto podría deberse a varios motivos, como un error en el script de migración, una tabla ya existente con el mismo nombre, entre otros.

Una posible solución sería realizar lo que el propio mensaje de error sugiere: ejecutar el comando de reparación para corregir el historial del esquema.

./mvnw flyway:repair

Este comando intentará reparar el historial de esquemas de Flyway corrigiendo las entradas fallidas.

Si este comando no soluciona el problema, te recomendaría revisar el script de migración que falló (en tu caso, parece ser create-table-medicos) y asegurarte de que el script está correctamente formado.

Espero que esta información te sea útil. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios
solución!

Hola Yesenia,

Problemas también con las migraciones de Flyway que ha fallado. Revisa la migración que está fallando. Asegúrate de que el SQL es correcto y puede ejecutarse sin errores en tu base de datos.

Si la migración parece estar bien, el siguiente paso es tratar de limpiar la base de datos. Puedes hacer esto ejecutando el comando flyway clean. Ten en cuenta que este comando eliminará todas las tablas de la base de datos, así que asegúrate de tener un respaldo de los datos si es necesario.

Una vez que la base de datos esté limpia, puedes intentar ejecutar las migraciones de nuevo con el comando flyway migrate.

Si después de seguir estos pasos el problema persiste, te recomendaría que revises la configuración de Flyway y la conexión a la base de datos. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Creo que el problema se crea porque el archivo de migración fue modificado una vez ejecutado el programa con la migración, se debe evitar esto, una vez ejecutado el proggrama no se deben modificar las versiones de migracion.

Lo que se puede hacer es eliminar dicho registro de migración en la base de datos, en la tabla creada por flyway "flyway_squema_history", ahi se registran las versiones de comandos de base de datos de las migraciones, elimine el último (correspondiente a la versión que presenta falla) como cualquier otro registro de tabla desde la base de datos y vuelva a ejecutar el programa.