diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java index 2955439bf620..830e47a2acdd 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java @@ -122,7 +122,7 @@ private List getScripts(List locations, String type, ScriptLoc location = location.substring(OPTIONAL_LOCATION_PREFIX.length()); } for (Resource resource : doGetResources(location, locationResolver)) { - if (resource.exists()) { + if (resource.isReadable()) { resources.add(resource); } else if (!optional) { diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializerTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializerTests.java index 81702612e789..d46d3221e85f 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializerTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializerTests.java @@ -44,6 +44,16 @@ void whenDatabaseIsInitializedThenSchemaAndDataScriptsAreApplied() { assertThat(numberOfEmbeddedRows("SELECT COUNT(*) FROM EXAMPLE")).isOne(); } + @Test + void whenDatabaseIsInitializedWithDirectoryLocationsThenFailureIsHelpful() { + DatabaseInitializationSettings settings = new DatabaseInitializationSettings(); + settings.setSchemaLocations(Arrays.asList("/org/springframework/boot/sql/init")); + settings.setDataLocations(Arrays.asList("/org/springframework/boot/sql/init")); + T initializer = createEmbeddedDatabaseInitializer(settings); + assertThatIllegalStateException().isThrownBy(initializer::initializeDatabase) + .withMessage("No schema scripts found at location '/org/springframework/boot/sql/init'"); + } + @Test void whenContinueOnErrorIsFalseThenInitializationFailsOnError() { DatabaseInitializationSettings settings = new DatabaseInitializationSettings();