diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializer.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializer.java index 6fe2993ac97..ccb131bc687 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializer.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializer.java @@ -21,6 +21,9 @@ import java.util.List; import javax.sql.DataSource; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer; @@ -38,6 +41,8 @@ import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; */ public class DataSourceScriptDatabaseInitializer extends AbstractScriptDatabaseInitializer { + private static final Log logger = LogFactory.getLog(DataSourceScriptDatabaseInitializer.class); + private final DataSource dataSource; /** @@ -61,7 +66,13 @@ public class DataSourceScriptDatabaseInitializer extends AbstractScriptDatabaseI @Override protected boolean isEmbeddedDatabase() { - return EmbeddedDatabaseConnection.isEmbedded(this.dataSource); + try { + return EmbeddedDatabaseConnection.isEmbedded(this.dataSource); + } + catch (Exception ex) { + logger.debug("Could not determine if datasource is embedded", ex); + return false; + } } @Override diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializerTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializerTests.java index 46a24b13165..26a86fe6e0c 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializerTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializerTests.java @@ -22,6 +22,7 @@ import javax.sql.DataSource; import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializerTests; @@ -53,6 +54,13 @@ class DataSourceScriptDatabaseInitializerTests this.standloneDataSource.close(); } + @Test + void whenDatabaseIsInaccessibleThenItIsAssumedNotToBeEmbedded() { + DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer( + new HikariDataSource(), new DatabaseInitializationSettings()); + assertThat(initializer.isEmbeddedDatabase()).isFalse(); + } + @Override protected DataSourceScriptDatabaseInitializer createEmbeddedDatabaseInitializer( DatabaseInitializationSettings settings) {