diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java index 8a47e44928..48c09c505d 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java @@ -216,7 +216,8 @@ public enum EmbeddedDatabaseConnection { EmbeddedDatabaseConnection[] candidates = EmbeddedDatabaseConnection.values(); for (EmbeddedDatabaseConnection candidate : candidates) { if (candidate != NONE && productName.contains(candidate.name())) { - return candidate.isEmbeddedUrl(metaData.getURL()); + String url = metaData.getURL(); + return (url == null || candidate.isEmbeddedUrl(url)); } } return false; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java index b86f56b6fe..64e5e9bdaf 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnectionTests.java @@ -151,6 +151,17 @@ class EmbeddedDatabaseConnectionTests { .isFalse(); } + @Test + void isEmbeddedWithMissingDriverClassMetadata() throws SQLException { + assertThat(EmbeddedDatabaseConnection.isEmbedded(mockDataSource(null, "jdbc:h2:meme:test"))).isFalse(); + } + + @Test + void isEmbeddedWithMissingUrlMetadata() throws SQLException { + assertThat(EmbeddedDatabaseConnection + .isEmbedded(mockDataSource(EmbeddedDatabaseConnection.H2.getDriverClassName(), null))).isTrue(); + } + DataSource mockDataSource(String productName, String connectionUrl) throws SQLException { DatabaseMetaData metaData = mock(DatabaseMetaData.class); given(metaData.getDatabaseProductName()).willReturn(productName);