Saltar al contenido

¿Por qué la aplicación Spring Boot 2.0 no ejecuta schema.sql?

Estate atento ya que en este escrito vas a encontrar la solución que buscas.

Solución:

Consulta los documentos aquí.

En una aplicación basada en JPA, puede elegir dejar que Hibernate cree el esquema o usar schema.sql, pero no puede hacer ambas cosas. Asegúrese de deshabilitar spring.jpa.hibernate.ddl-auto si usa schema.sql.

Tu tienes spring.jpa.hibernate.ddl-auto=create-drop es por eso schema.sql no se ejecuta. Parece que así es como funciona Spring Boot.

Editar

Creo que el problema (no es realmente un problema) es que su aplicación apunta a una instancia de mysql.

Vea las propiedades actuales de Spring Boot:

spring.datasource.initialization-mode=embedded # Initialize the datasource with available DDL and DML scripts.

El valor predeterminado es embedded – por ejemplo, inicialice solo si está ejecutando una base de datos integrada, como H2.

También vea la respuesta de Stephan aquí. Él dijo:

Agregar spring.datasource.initialization-mode=always a su proyecto es suficiente.

Así que intenta configurar:

spring.datasource.initialization-mode=always

No incrustado (por ejemplo, MySQL)

Si carga una base de datos que es no incrustadoen Spring Boot 2 necesitas agregar:

spring.datasource.initialization-mode=always

Consulte la Guía de migración:

Inicialización de la base de datos

La inicialización básica de DataSource ahora solo está habilitada para fuentes de datos incrustadas y se desactivará tan pronto como esté utilizando una base de datos de producción. El nuevo spring.datasource.initialization-mode (reemplazando
spring.datasource.initialize) ofrece más control.


Embebido (por ejemplo, h2)

Una vez tuve un problema similar, aunque era un h2 (así que era una base de datos incrustada), mi configuración h2 fue activada por un my-test perfil.

Mi clase de prueba fue como:

@RunWith(SpringRunner.class)
@SpringBootTest                     // does not work alone
@ActiveProfiles("my-test")
public class MyEntityRepositoryTest {

El problema es @SpringBootTest solo no inicializó la base de datos de prueba. Tuve que usar @DataJpaTest o @SpringBootTest+@AutoConfigureTestDatabase. Ejemplos

@RunWith(SpringRunner.class)
@DataJpaTest                       // works
@ActiveProfiles("sep-test")
public class MyEntityRepositoryTest {

o

@RunWith(SpringRunner.class)
@SpringBootTest                     // these two
@AutoConfigureTestDatabase          // together work
@ActiveProfiles("sep-test")
public class MyEntityRepositoryTest {

Funciona bien para mí, puedes probarlo. Establezca el tipo de fuente de datos como desee en lugar de HikariCP.

spring.datasource.initialization-mode=always
spring.datasource.type=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
spring.jpa.hibernate.ddl-auto=none

No se te olvide recomendar este tutorial si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *