为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【问题描述】*:
2024-10-31 16:04:51.816|restartedMain|10008|reservation|ERROR||com.alibaba.druid.pool.DruidDataSource|init@963|{dataSource-1} init error
java.lang.IllegalStateException: dbType not support : dm, url jdbc:dm://127.0.0.1:5236/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
at com.alibaba.druid.wall.WallFilter.init(WallFilter.java:166) ~[druid-1.1.23.jar:1.1.23]
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:828) ~[druid-1.1.23.jar:1.1.23]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1378) ~[druid-1.1.23.jar:1.1.23]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1374) ~[druid-1.1.23.jar:1.1.23]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98) ~[druid-1.1.23.jar:1.1.23]
at org.nutz.trans.Trans.getConnectionAuto(Trans.java:263) ~[nutz-1.r.68.v20190516.jar:1.r.68.v20190516]
at org.nutz.dao.jdbc.Jdbcs.getExpert(Jdbcs.java:106) ~[nutz-1.r.68.v20190516.jar:1.r.68.v20190516]
搞了两天:
spring:
druid:
filters: stat,wall
filters: stat,wall 的 wall 代表什么意思?
有这个wall,会导致 ”Failed to obtain JDBC Connection; nested exception is java.lang.IllegalStateException: dbType not support“
wall 过滤器说明:
过滤器 作用
stat 监控统计,记录 SQL 执行次数、时间等
wall SQL 防火墙,防止注入和危险操作
报错原因:
WallFilter 需要识别数据库类型来解析 SQL 语法规则
Druid 内置支持的数据库类型:mysql、oracle、postgresql、sqlserver 等
达梦数据库(dm)不在支持列表中,即使配置了 type: oracle,WallFilter 仍可能无法正确识别达梦特有的语法,导致 dbType not support 错误
所以去掉 wall 即可

可以用数据库安装目录的drivers/jdbc下找的驱动试试
还有把url改成 jdbc:dm://127.0.0.1:5236