irpas技术客

com.microsoft.sqlserver.jdbc.SQLServerException: ‘version‘ 不是可以识别的 内置函数名称_撒欢的鹰_s

网络投稿 5798

org.apache.ibatis.exceptions.PersistenceException:? ### Error querying database. ?Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 'version' 不是可以识别的 内置函数名称。 ### The error may exist in file [D:\software\Java\Project\cs\ceshi\astest\target\classes\mybatis\abc\abcMapper.xml] ### The error may involve com.abc.abcc.project.abc.mapper.abcMapper.get ### The error occurred while executing a query ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 'version' 不是可以识别的 内置函数名称。

这个问题卡了我好几天,试了更换jar包等众多解决方案,都未解决。之后看到这篇文章,顺利解决。

文章地址:DBCP针对不同数据库的validationQuery_Brent-CCNU的博客-CSDN博客_validationquery

原因:validationQuery不匹配

原配置:

spring: ? datasource: ? ? type: com.alibaba.druid.pool.DruidDataSource ? ? druid: ? ? ? # 主库数据源 ? ? ? master: ? ? ? ? driverClassName: org.postgresql.Driver ? ? ? ? url: jdbc:postgresql://localhost:5432/test?currentSchema=test&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 ? ? ? ? username: admin ? ? ? ? password: 123456 ? ? ? slave: ? ? ? ? enabled: true ? ? ? ? driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver ? ? ? ? url: jdbc:sqlserver://localhost:1433;DatabaseName=wsd ? ? ? ? username: sa ? ? ? ? password: 123456 ? ? ? # 初始连接数 ? ? ? initialSize: 5 ? ? ? # 最小连接池数量 ? ? ? minIdle: 10 ? ? ? # 最大连接池数量 ? ? ? maxActive: 20 ? ? ? # 配置获取连接等待超时的时间 ? ? ? maxWait: 60000 ? ? ? # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 ? ? ? timeBetweenEvictionRunsMillis: 60000 ? ? ? # 配置一个连接在池中最小生存的时间,单位是毫秒 ? ? ? minEvictableIdleTimeMillis: 300000 ? ? ? # 配置一个连接在池中最大生存的时间,单位是毫秒 ? ? ? maxEvictableIdleTimeMillis: 900000 ? ? ? # 配置检测连接是否有效 ? ? ? validationQuery: select version() ? ? ? testWhileIdle: true ? ? ? testOnBorrow: false ? ? ? testOnReturn: false ?? ? ?webStatFilter: ? ? ? ? enabled: true ? ? ? statViewServlet: ? ? ? ? enabled: true ? ? ? ? # 设置白名单,不填则允许所有访问 ? ? ? ? allow: ? ? ? ? url-pattern: /druid/* ? ? ? ? # 控制台管理用户名和密码 ? ? ? ? login-username: ? ? ? ? login-password: ? ? ? filter: ? ? ? ? stat: ? ? ? ? ? enabled: true ? ? ? ? ? # 慢SQL记录 ? ? ? ? ? log-slow-sql: true ? ? ? ? ? slow-sql-millis: 1000 ? ? ? ? ? merge-sql: true ? ? ? ? wall: ? ? ? ? ? config: ? ? ? ? ? ? multi-statement-allow: true

解决办法:

只需要将validationQuery: select version() 改为 validationQuery: select 1,这样postgresql数据库也可以正常运行。

更改前:

更改后:

?希望对你有帮助。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #sqlserver #不是可以识别的 #内置函数名称 #failed #To #obtain #jdbc #Connection