Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

132
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!