Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot springboot2.0集成hikariCP2.7.9,抛出;默认事务隔离级别检测失败(代理警告-接近“语法错误”);_Spring Boot_Hikaricp_Spring Mybatis_Multi Database - Fatal编程技术网

Spring boot springboot2.0集成hikariCP2.7.9,抛出;默认事务隔离级别检测失败(代理警告-接近“语法错误”);

Spring boot springboot2.0集成hikariCP2.7.9,抛出;默认事务隔离级别检测失败(代理警告-接近“语法错误”);,spring-boot,hikaricp,spring-mybatis,multi-database,Spring Boot,Hikaricp,Spring Mybatis,Multi Database,HikariCP版本:2.7.9 JDK版本:1.8.0_111 数据库:MySQL 异常: HikariPool-1-池初始化期间出现异常。 2018-06-28 21:09:36.545 WARN 35084---[nio-8008-exec-2]c.z.h.p.PoolBase:HikariPool-1-默认事务隔离级别检测失败(代理警告-接近“:语法错误)。 java.sql.SQLException:代理警告-接近“”:语法错误 在com.mysql.jdbc.SQLError.cre

HikariCP版本:2.7.9 JDK版本:1.8.0_111 数据库:MySQL

异常

HikariPool-1-池初始化期间出现异常。 2018-06-28 21:09:36.545 WARN 35084---[nio-8008-exec-2]c.z.h.p.PoolBase:HikariPool-1-默认事务隔离级别检测失败(代理警告-接近“:语法错误)。 java.sql.SQLException:代理警告-接近“”:语法错误 在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2482)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2440)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.mysql.jdbc.ConnectionImpl.getTransactionIsolation(ConnectionImpl.java:3001)~[mysql-connector-java-5.1.46.jar:5.1.46] 在com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:457)~[HikariCP-2.7.9.jar:?] 在com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:412)~[HikariCP-2.7.9.jar:?] 在com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:370)~[HikariCP-2.7.9.jar:?] 在com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194)~[HikariCP-2.7.9.jar:?] 在com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460)[HikariCP-2.7.9.jar:?] 在com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:534)[HikariCP-2.7.9.jar:?] 在com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115)[HikariCP-2.7.9.jar:?] 在com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)[HikariCP-2.7.9.jar:?] 位于org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:151)[spring-jdbc-5.0.6.RELEASE.jar:5.0.6.RELEASE] 位于org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)[spring-jdbc-5.0.6.RELEASE.jar:5.0.6.RELEASE] 位于org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)[spring-jdbc-5.0.6.RELEASE.jar:5.0.6.RELEASE] 在org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:82)[mybatis-spring-1.3.2.jar:1.3.2] 在org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:68)[mybatis-spring-1.3.2.jar:1.3.2] 在org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:338)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)[mybatis-3.4.6.jar:3.4.6] 位于org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)[mybatis-3.4.6.jar:3.4.6] 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[?:1.8.0_101] 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[?:1.8.0101] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[?:1.8.0101] 在java.lang.reflect.Method.invoke(Method.java:498)~[?:1.8.0_101] 在org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)[mybatis-spring-1.3.2.jar:1.3.2] 在com.sun.proxy.$Proxy92.selectList(未知源)[?:?] 在org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)[mybatis-spring-1.3.2.jar:1.3.2] 在org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:139)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:76)[mybatis-3.4.6.jar:3.4.6] 在org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)[mybatis-3.4.6.jar:3.4.6]

我的项目使用springboot 2.0和默认的integrate hikari 2.7.9

配置自定义数据源:

@Bean(name = "xxOrderDSProperties")
@Qualifier("xxOrderDSProperties")
@ConfigurationProperties(prefix = "spring.datasource.datasource-xxorder")
public DataSourceProperties xxOrderDSProperties(){
    return new DataSourceProperties();
}

@Bean(name = "xxorderDS")
@ConfigurationProperties(prefix = "spring.datasource.datasource-xxorder")
public DataSource dataSourcexxOrder(){
    //return DruidDataSourceBuilder.create().build(); **//this could work**.
    return xxOrderDSProperties().initializeDataSourceBuilder().build(); //**this throws above exception**
}
config properties application.yaml: 春天: 数据源: 数据源顺序: 类型:com.zaxxer.hikari.HikariDataSource 名称:数据源xxorder url:jdbc:mysql://{$host}:{$port}/db?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull 用户名:userxx 密码:pwdxx 驱动程序类名:com.mysql.jdbc.driver

我调试源代码并找到引发上述异常的代码:

try {
defaultTransactionIsolation = connection.getTransactionIsolation();
if (transactionIsolation == -1) {
transactionIsolation = defaultTransactionIsolation;
}
}
catch (SQLException e) {
LOGGER.warn("{} - Default transaction isolation level detection failed ({}).", poolName, e.getMessage());
if (e.getSQLState() != null && !e.getSQLState().startsWith("08")) {
throw e;
}
我发现连接只有一个名为“isolationLevel”的属性,而不是“transactionIsolation”,getTransactionIsolation总是得到异常

然后我把它和德鲁伊比较。德鲁伊可以跳过这个例外。并连接,执行sql操作成功。 德鲁伊的代码:

try {
this.underlyingTransactionIsolation = conn.getTransactionIsolation();
} catch (SQLException e) {
// compartible for alibaba corba
if ("HY000".equals(e.getSQLState())
|| "com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException".equals(e.getClass().getName())) {
// skip
} else {
throw e;
}
}
我想知道当使用mybatis配置访问mysql时,如何使hikariCP与springboot正确工作?有什么建议吗

谢谢。

找到了原因。 我们使用atlas作为数据库中间件,它不能支持