Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
6
respuestas

[Duda] PROBLEMAS CON FLYWAY MIGRATIONS

Hola queridos amigos de Alura, tengo un gran problema y creanme que nose porque sucedio, segun la console de intelliJ tengo un problema con las migraciones de flyway, que seria esto de aqui:

Caused by: 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
Migration checksum mismatch for migration version 1
-> Applied to database : 1078627297
-> Resolved locally    : 764641215
Either revert the changes to the migration, or run repair to update 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:1751) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:313) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:365) ~[spring-beans-6.0.4.jar:6.0.4]
    ... 83 common frames omitted
Caused by: org.flywaydb.core.api.exception.FlywayValidateException: Validate failed: Migrations have failed validation
Migration checksum mismatch for migration version 1
-> Applied to database : 1078627297
-> Resolved locally    : 764641215
Either revert the changes to the migration, or run repair to update the schema history.
Need more flexibility with validation rules? Learn more: https://rd.gt/3AbJUZE
    at org.flywaydb.core.Flyway.lambda$migrate$0(Flyway.java:134) ~[flyway-core-9.5.1.jar:na]
    at org.flywaydb.core.FlywayExecutor.execute(FlywayExecutor.java:204) ~[flyway-core-9.5.1.jar:na]
    at org.flywaydb.core.Flyway.migrate(Flyway.java:128) ~[flyway-core-9.5.1.jar:na]
    at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:66) ~[spring-boot-autoconfigure-3.0.2.jar:3.0.2]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1797) ~[spring-beans-6.0.4.jar:6.0.4]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1747) ~[spring-beans-6.0.4.jar:6.0.4]
    ... 92 common frames omitted

y segun veo el problema principal seria que en la base de datos normal(la que no es de test) se estarian "cruzando" (por asi decirlo ) las validaciones

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Puedo validar que en la parte

-> Applied to database : 1078627297
-> Resolved locally    : 764641215

donde dice " Applied to database : 1078627297" es el codigo de la base de produccion y "Resolved locally : 764641215" es la base de test. He estado buscando en la pagina de flyway pero no he podido resolver necesito su ayuda urg :c

6 respuestas

Adicional, cabe mencionar que el test de MedicoRepositoryTest esta funcionando muy bien: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadMe di cuenta de este error ya que en el 2do test, el de ConsultaControllerTest me empezo a salir lo mismo:

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

solución!

Este error suele surgir motivo de que los migrations fueron enviados anteriormente en una versión, luego esa misma versión fue cambiada; lo cual crea un error con la API. La forma de solucionar esto es la siguiente; primer asegurate de que tus migrations esté correctamente hechos (Te recomiendo verificar qué cosas necesitás, y si todo lo que necesita tu base de datos ya está en los migrations; utilicés ChatGPT para que revise si tenés algún error en la sintaxis), cuando hayas confirmado la corrección de los migrations va a ir a tu base de datos y vas a eliminar todas las tablas (Es importante aclarar que toda información va a borrarse. Si existe un método para arreglar este error sin perder los datos almacenados, no lo conozco)

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Con esto realizado, lo que sigue es borrar las migrations que se encuentran en la carpeta Tarjet(Recomiendo borrarlas todas, así te asegurás de que van a ser reemplazadas por las que tenés actualmente. No te preocupés, en esta carpeta se generan automáticamente)

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Y si no me equivoco, eso debería solucionar tu problema.

De forma explicativa; cuando creamos un migration, o cualquier tipo de archivo/carpeta, al ejecutar el programa la carpeta Tarjet copia todo lo que hicimos, por lo que si hay algo que esté mal (cómo lo puede ser un migration), esta va a persistir con ese error a pesar de que cambiemos eso en nuestro proyecto; pues no puede lanzar la misma versiónde migration dos veces. Esto suele generar problemas con casi todo en general, me ha pasado cuando moví clases a carpetas sin utilizar la opción "refactor" también. Espero que mi propuesta te ayude

Okay te entiendo, para este caso existe dos BDD, la de test y con la que se venia trabajando anteriormente. En este caso se deben eliminar todas las tamblas de ambas bases?

No tengo experiencia haciéndolo con dos bases de datos, pero por lógica comprendería que sí sería necesario; ya que si ambas están conectadas y borrás sólo una la otra te va a seguir tirando el error

Impecableme sirvio tuayuda!!!!

Amigazo Lautaro!! Me funciono tu sugerencia, ya pude iniciar mi apliacion muchisimas gracias! Ahora otra pregunta, me indicaste que no has utilizado flyways para BDD, solo para saber, en que otros casos de uso se utiliza flyway migrations?