1

I want to configure Spring Boot and Flyway to create a database automatically on startup. Also I want to migrate the database using SQL-files later. Currently I am stuck at the first step (Create Database on Startup).

Unfortunately on starting my project I receive the following error:

SQL State  : XJ004
Error Code : 40000
Message    : Database 'database' not found.

    at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:65)
    at org.flywaydb.core.internal.jdbc.JdbcConnectionFactory.<init>(JdbcConnectionFactory.java:80)
    at org.flywaydb.core.Flyway.execute(Flyway.java:453)
    at org.flywaydb.core.Flyway.migrate(Flyway.java:158)
    at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)
    ... 132 common frames omitted
Caused by: java.sql.SQLException: Database 'database' not found.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleDBNotFound(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
    at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
    at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
    at org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(Unknown Source)
    at org.apache.derby.jdbc.InternalDriver$LoginCallable.call(Unknown Source)
    at org.apache.derby.jdbc.InternalDriver$LoginCallable.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.apache.derby.iapi.error.StandardException: Database 'database' not found.
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source)
    ... 17 common frames omitted

My build.gradle file contains:

  compile "org.flywaydb:flyway-core:6.5.6"

My application.properties file contains:

## Database Configuration
spring.datasource.url = jdbc:derby:database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.DerbyTenSevenDialect
spring.jpa.hibernate.ddl-auto = validate

spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=db/migration/create.sql
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-source=metadata

flyway.url = jdbc:derby:database
spring.flyway.locations=classpath:db/migration,filesystem:/db/migration
spring.flyway.enabled = true

I am not quite sure if Flyway and Spring can handle my needs.

D. Jung
  • 145
  • 1
  • 1
  • 9

0 Answers0