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

1.5K
Vistas
H2 en la base de datos de memoria no funciona después de la actualización a SpringBoot 2.4.0

Tengo una aplicación SpringBoot con pruebas de integración que utilizan una base de datos en memoria H2. Las pruebas funcionan, si uso SpringBoot en versino 2.3.4.RELEASE. Fallan si actualizo a 2.4.0 con el siguiente error:

 java.lang.IllegalStateException: Failed to load ApplicationContext Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Driver com.microsoft.sqlserver.jdbc.SQLServerDriver claims to not accept jdbcUrl, jdbc:h2:mem:integrationTestDB;DB_CLOSE_DELAY=-1;MODE=MSSQLServer;INIT=CREATE SCHEMA IF NOT EXISTS dbo\;SET SCHEMA dbo Caused by: java.lang.RuntimeException: Driver com.microsoft.sqlserver.jdbc.SQLServerDriver claims to not accept jdbcUrl, jdbc:h2:mem:integrationTestDB;DB_CLOSE_DELAY=-1;MODE=MSSQLServer;INIT=CREATE SCHEMA IF NOT EXISTS dbo\;SET SCHEMA dbo

Aquí está mi Integration-test.properties, que es utilizado por las pruebas:

 spring.datasource.url=jdbc:h2:mem:integrationTestDB;\ DB_CLOSE_DELAY=-1;\ MODE=MSSQLServer;\ INIT=CREATE SCHEMA IF NOT EXISTS dbo\\;SET SCHEMA dbo spring.datasource.driver=org.h2.Driver spring.datasource.hikari.driver-class-name=org.h2.Driver hibernate.dialect=org.hibernate.dialect.SQLServerDialect hibernate.hbm2ddl.auto=none spring.datasource.username=sa spring.datasource.password= spring.liquibase.user=sa spring.liquibase.password=

La versión de H2 es 1.4.200. La diferencia entre el éxito y el fracaso es la versión de SpringBoot en el elemento principal del pom:

 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.0</version> </parent>

La versión de liquibase cambió de 3.8.9 a 3.10.3. Lo configuré para permanecer en 3.8.9 pero eso no ayudó.

Leí las notas de la versión y encontré la parte sobre la detección de la base de datos integrada: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes#embedded-database-detection

pero agregando

 spring.datasource.initialization-mode=always

a las propiedades tampoco ayudó.

Recuerdo que me tomó un tiempo encontrar la URL de la fuente de datos correcta la última vez, pero no puedo encontrar ninguna pista nueva con Google.

¿Me puede dar una pista, lo que causa este problema?

Saludos cordiales Ulrico

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

0

Sus propiedades contienen una combinación de configuración de H2 y SQL Server. Por ejemplo, configuró una URL H2 JDBC para DataSource pero configuró Hibernate para usar SQLServerDialect . La excepción muestra que el controlador JDBC de SQL Server se está utilizando al intentar inicializar Liquibase. Me parece que está tratando de usar H2 en sus pruebas de integración, reemplazando SQL Server que se usa cuando se implementa su aplicación.

Hay una nueva spring.liquibase.driver-class-name en 2.4.0 . Cuando no se configura, recurre al uso spring.datasource.driver-class-name . No hay una propiedad spring.datasource.driver , así que intente reemplazar las siguientes dos líneas:

 spring.datasource.driver=org.h2.Driver spring.datasource.hikari.driver-class-name=org.h2.Driver

con la siguiente línea:

 spring.datasource.driver-class-name=org.h2.Driver
over 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