使用druid配置多数据源后,访问sqlserver数据源分页语句,报错:sql injection violation, syntax error: syntax error, error in :' TOP 5 FROM (SELECT ROW_NUMBER() ', expect LITERAL_INT, actual LITERAL_INT pos 12, line 1, column 12, token LITERAL_INT : SELECT TOP 5 FROM (SELECT ROW_NUMBER() OVER (ORDER BY RAND()) PAGE_ROW_NUMBER, FROM (SELECT tc. FROM TC_CarIdentify AS tc WHERE 1 = 1) AS PAGE_TABLE_ALIAS) AS PAGE_TABLE_ALIAS WHERE PAGE_ROW_NUMBER > 0 ORDER BY PAGE_ROW_NUMBER 配置sqlserver数据源wall filter,指定db-type为sqlserver才可执行。但若给两个数据源分别配置wall filter则第二个数据源配置不生效。 最终只能,使用WallConfig.setStrictSyntaxCheck(false);取消严格的语法检测才可进行分页查询。
Q
[alibaba/druid]多数据源配置wall filter会拦截sqlserver分页语句
1
A
回答
1
不方便重现。。。
9
那请问多个数据源可以配置每个数据源自己的wall filter吗?
2
那请问多个数据源可以配置每个数据源自己的wall filter吗?
可以
3
但是我这样配置没有生效,其中连接信息可以生效,而我如果把filter配置在最外层即所有数据源都使用的话会生效。。 spring: datasource: druid: two: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Car_DB username: sa password: haosql filter: wall: enabled: true db-type: sqlserver