diff --git a/backend/src/main/java/com/yfd/platform/datasource/DynamicDataSourceRegistry.java b/backend/src/main/java/com/yfd/platform/datasource/DynamicDataSourceRegistry.java index d39ccce2..a0cc2dff 100644 --- a/backend/src/main/java/com/yfd/platform/datasource/DynamicDataSourceRegistry.java +++ b/backend/src/main/java/com/yfd/platform/datasource/DynamicDataSourceRegistry.java @@ -200,8 +200,9 @@ public class DynamicDataSourceRegistry { ? conf.getConnTimeout() : 30000L; ds.setMaxWait(connTimeout); - // 通用连接池配置 - ds.setValidationQuery("SELECT 1"); + // 通用连接池配置:根据 URL 自动选择正确的 validationQuery + // Oracle 需要 SELECT 1 FROM DUAL,DM/MySQL/PostgreSQL 用 SELECT 1 即可 + ds.setValidationQuery(resolveValidationQuery(driver, conf.getUrl())); ds.setValidationQueryTimeout(3); ds.setTestWhileIdle(true); ds.setTestOnBorrow(false); @@ -254,6 +255,24 @@ public class DynamicDataSourceRegistry { throw new IllegalArgumentException("无法根据 URL 自动识别驱动类型: " + url); } + /** + * 根据驱动/URL 自动选择正确的 validationQuery + *