Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
Infracción de la restricción de carga de la migración de la vía migratoria con Spring

He creado algunos back-ends con Node/Express y Go, pero esta es la primera vez que intento crear uno con Java/Spring.

Me dijeron que Flyway es la mejor herramienta para las migraciones. Hice funcionar las migraciones de SQL para configurar el esquema para todas mis tablas, ahora estoy tratando de generar una tabla de user con una migración basada en Java.

Ahora, cuando llamo a gradle flywayMigrate , aparece este error:

 loader constraint violation in interface itable initialization: when resolving method "db.migration.V2_1__Add_Users.migrate(Lorg/springframework/jdbc/core/JdbcTemplate;)V" the class loader (instance of java/net/URLClassLoader) of the current class, db/migration/V2_1__Add_Users, and the class loader (instance of org/gradle/internal/classloader/VisitableURLClassLoader) for interface org/flywaydb/core/api/migration/spring/SpringJdbcMigration have different Class objects for the type org/springframework/jdbc/core/JdbcTemplate used in the signature

Esto es lo que tengo en build.gradle:

 buildscript { ext { springBootVersion = '1.5.2.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } plugins { id "org.flywaydb.flyway" version "4.1.2" } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'project-report' flyway { url = 'jdbc:mysql://localhost/upshift?serverTimezone=UTC' user = 'root' locations = ['db.migration'] } version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('org.flywaydb:flyway-core') compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-security') compile("org.springframework:spring-jdbc") runtime('mysql:mysql-connector-java') testCompile('org.springframework.security:spring-security-test') testCompile('org.springframework.boot:spring-boot-starter-test') }

Y esta es la clase Java con la que estoy tratando de migrar:

 package db.migration; import org.flywaydb.core.api.migration.spring.SpringJdbcMigration; import org.springframework.jdbc.core.JdbcTemplate; public class V2_1__Add_Users implements SpringJdbcMigration { public void migrate(JdbcTemplate jdbcTemplate) throws Exception { jdbcTemplate.execute("INSERT INTO users (email, password) VALUES ('test@test.com', 'test123')"); } }

¿Alguna idea de lo que podría estar pasando? Busqué por aquí y busqué un poco en Google, pero no encontré otros ejemplos similares. La razón principal por la que estoy haciendo una migración de Java es para poder intentar traer bCrypt para codificar las contraseñas de mis usuarios sembrados, pero definitivamente es posible que esté pensando en esto incorrectamente. ¡Cualquier idea sería muy apreciada!

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Necesitaba agregar spring-jdbc a las dependencias de buildscript para que esto funcione con Flyway 4.1.2.

Flyway 4.0.3 funcionó sin él.

 buildscript { ext { springBootVersion = '1.5.2.RELEASE' springVersion = '4.3.7.RELEASE' flywayVersion = '4.1.2' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("org.flywaydb:flyway-gradle-plugin:${flywayVersion}") classpath("org.springframework:spring-jdbc:${springVersion}") } } apply plugin: 'java' apply plugin: 'idea' apply plugin: 'org.springframework.boot' apply plugin: 'project-report' apply plugin: 'org.flywaydb.flyway' flyway { url = 'jdbc:mysql://localhost/upshift?serverTimezone=UTC' user = 'root' password = 'root' locations = ['db.migration'] } version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-data-jpa') compile("org.flywaydb:flyway-core:${flywayVersion}") compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-security') runtime('mysql:mysql-connector-java') testCompile('org.springframework.security:spring-security-test') testCompile('org.springframework.boot:spring-boot-starter-test') }

También agregué una versión explícita de Flyway a las dependencias de compilación para garantizar que se usaría la misma versión para las tareas de Gradle y en tiempo de ejecución.

 compile("org.flywaydb:flyway-core:${flywayVersion}")

Creé un ejemplo de trabajo en este repositorio .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda