es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puede Spring crear un nuevo esquema (usando Flyway) al inicio y luego conectarse a él a través del datasource predeterminado?

Mi aplicación spring-boot tiene las siguientes propiedades configuradas,

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my-schema
spring.datasource.username=root
spring.datasource.password=*****
spring.flyway.check-location=false
spring.flyway.createSchemas=true
spring.flyway.schemas=my-schema

El esquema ‘my-schema’ no existe previamente y quiero que sea creado por flyway y luego utilizado por la aplicación spring-boot para levantar el datasource HikarCP.

Si ejecuto la aplicación con las configuraciones anteriores, obtengo el siguiente error al iniciarse:

Caused by: org.flywaydb.core.internal.exception.FlywaySqlException:
Unable to obtain connection from database: Unknown database ‘my-schema’

Ahora, si cambio,

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/

La aplicación se inicia perfectamente y crea el esquema. Sin embargo, cuando intenta consultar cualquier tabla, la excepción que aparece es:

java.sql.SQLException: No database selected

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema es que el nombre de la base de datos no está incluido en la URL JDBC para el origen de datos. Para solucionar esto, actualiza la propiedad spring.datasource.url para incluir el nombre de la base de datos:

    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my-schema
    

    Además, asegúrate de que el servidor MySQL esté funcionando y de que los detalles de autenticación para el usuario root sean correctos. Una vez realizados estos cambios, los scripts de migración de Flyway crearán el esquema (si no existe previamente) y el origen de datos de HikariCP podrá conectarse a él.

Comments are closed.