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数据库也可以正常运行。
更改前:
更改后:
文章来源:https://www.toymoban.com/news/detail-452558.html
希望对你有帮助。文章来源地址https://www.toymoban.com/news/detail-452558.html
到了这里,关于com.microsoft.sqlserver.jdbc.SQLServerException: ‘version‘ 不是可以识别的 内置函数名称的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!