diff --git a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java index a8daede36..04b470f92 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java +++ b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java @@ -240,8 +240,32 @@ public class DatabaseService implements DatabaseInterface { private boolean isH2Database() { ApplicationProperties.Datasource datasource = applicationProperties.getSystem().getDatasource(); - return !datasource.isEnableCustomDatabase() - || datasource.getType().equalsIgnoreCase(ApplicationProperties.Driver.H2.name()); + + boolean isTypeH2 = + datasource.getType().equalsIgnoreCase(ApplicationProperties.Driver.H2.name()); + boolean isDBUrlH2 = + datasource.getCustomDatabaseUrl().contains("h2") + || datasource.getCustomDatabaseUrl().contains("H2"); + + if (isTypeH2 && !isDBUrlH2) { + log.warn( + "Datasource type is H2, but the URL does not contain 'h2'. " + + "Please check your configuration."); + throw new IllegalStateException( + "Datasource type is H2, but the URL does not contain 'h2'. Please check your" + + " configuration."); + } else if (!isTypeH2 && isDBUrlH2) { + log.warn( + "Datasource URL contains 'h2', but the type is not H2. " + + "Please check your configuration."); + throw new IllegalStateException( + "Datasource URL contains 'h2', but the type is not H2. Please check your" + + " configuration."); + } + + boolean isH2 = isTypeH2 && isDBUrlH2; + + return !datasource.isEnableCustomDatabase() || isH2; } /**