GBase 8s
其他
问答
HikariCP与GBase的兼容问题
发表于2024-12-17 17:58:33238次浏览9个评论
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】:GBase8sV8.8_TL_3.5.1_3X2_x86_64
【JDBC驱动】:gbasedbtjdbc_3.5.1_3X2_1.jar
【操作系统】:Centos8 (Docker构建的)
【CPU】:
[gbasedbt@ae8e80484b2a opt]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 48
On-line CPU(s) list: 0-47
Thread(s) per core: 2
Core(s) per socket: 12
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 106
Model name: Intel(R) Xeon(R) Silver 4310 CPU @ 2.10GHz
Stepping: 6
CPU MHz: 799.932
CPU max MHz: 3300.0000
CPU min MHz: 800.0000
BogoMIPS: 4200.00
Virtualization: VT-x
L1d cache: 48K
L1i cache: 32K
L2 cache: 1280K
L3 cache: 18432K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 invpcid_single ssbd mba rsb_ctxsw ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq md_clear pconfig spec_ctrl intel_stibp flush_l1d arch_capabilities【问题描述】*:
启动系统时报错 `HikariCP - Driver does not support get/set network timeout for connections. (不支持方法 : IfxSqliConnect.setNetworkTimeout(Executor, int))`,查看了驱动 `gbasedbtjdbc_3.5.1_3X2_1.jar` 的代码,发现是驱动内部不支持该方法,那么项目上要如何处理这个问题?
16:49:32.806 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
16:49:33.138 [main] INFO com.zaxxer.hikari.pool.PoolBase - HikariCP - Driver does not support get/set network timeout for connections. (不支持方法 : IfxSqliConnect.setNetworkTimeout(Executor, int))
16:49:33.157 [main] ERROR com.zaxxer.hikari.pool.PoolBase - HikariCP - Failed to execute connection test query (发生语法错误。).
16:49:33.162 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariCP - Error thrown while acquiring connection from data source
java.sql.SQLException: 发生语法错误。
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3577)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3857)
at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2747)
at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2672)
at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2575)
at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2555)
at com.gbasedbt.jdbc.IfxResultSet.b(IfxResultSet.java:374)
at com.gbasedbt.jdbc.IfxStatement.a(IfxStatement.java:1412)
at com.gbasedbt.jdbc.IfxStatement.executeImpl(IfxStatement.java:1384)
at com.gbasedbt.jdbc.IfxStatement.c(IfxStatement.java:1003)
at com.gbasedbt.jdbc.IfxStatement.execute(IfxStatement.java:921)
at com.zaxxer.hikari.pool.PoolBase.executeSql(PoolBase.java:583)
at com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:467)
at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:447)
at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:416)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:376)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:465)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:475)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:508)
at org.springframework.jdbc.core.JdbcTemplate.queryForMap(JdbcTemplate.java:502)
at com.qualsen.plat.web.listener.QualsenInit.run(QualsenInit.java:23)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at com.qualsen.plat.QualsenApplication.startupApp(QualsenApplication.java:32)
at com.qualsen.QAIotBizLjxApplication.main(QAIotBizLjxApplication.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: java.sql.SQLException: null
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3862)
... 42 common frames omitted
16:49:33.163 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariCP - Exception during pool initialization.
java.sql.SQLException: 发生语法错误。
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3577)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3857)
at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2747)
at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2672)
at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2575)
at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2555)
at com.gbasedbt.jdbc.IfxResultSet.b(IfxResultSet.java:374)
at com.gbasedbt.jdbc.IfxStatement.a(IfxStatement.java:1412)
at com.gbasedbt.jdbc.IfxStatement.executeImpl(IfxStatement.java:1384)
at com.gbasedbt.jdbc.IfxStatement.c(IfxStatement.java:1003)
at com.gbasedbt.jdbc.IfxStatement.execute(IfxStatement.java:921)
at com.zaxxer.hikari.pool.PoolBase.executeSql(PoolBase.java:583)
at com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:467)
at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:447)
at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:416)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:376)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:465)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:475)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:508)
at org.springframework.jdbc.core.JdbcTemplate.queryForMap(JdbcTemplate.java:502)
at com.qualsen.plat.web.listener.QualsenInit.run(QualsenInit.java:23)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at com.qualsen.plat.QualsenApplication.startupApp(QualsenApplication.java:32)
at com.qualsen.QAIotBizLjxApplication.main(QAIotBizLjxApplication.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: java.sql.SQLException: null
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3862)
... 42 common frames omitted
16:49:33.167 [main] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener -
aiot_server_biz2_ljx |
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
16:49:33.202 [main] ERROR o.s.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:774)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at com.qualsen.plat.QualsenApplication.startupApp(QualsenApplication.java:32)
at com.qualsen.QAIotBizLjxApplication.main(QAIotBizLjxApplication.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: 发生语法错误。
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:83)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:376)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:465)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:475)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:508)
at org.springframework.jdbc.core.JdbcTemplate.queryForMap(JdbcTemplate.java:502)
at com.qualsen.plat.web.listener.QualsenInit.run(QualsenInit.java:23)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771)
... 13 common frames omitted
Caused by: java.sql.SQLException: 发生语法错误。
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3577)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3857)
at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2747)
at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2672)
at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2575)
at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2555)
at com.gbasedbt.jdbc.IfxResultSet.b(IfxResultSet.java:374)
at com.gbasedbt.jdbc.IfxStatement.a(IfxStatement.java:1412)
at com.gbasedbt.jdbc.IfxStatement.executeImpl(IfxStatement.java:1384)
at com.gbasedbt.jdbc.IfxStatement.c(IfxStatement.java:1003)
at com.gbasedbt.jdbc.IfxStatement.execute(IfxStatement.java:921)
at com.zaxxer.hikari.pool.PoolBase.executeSql(PoolBase.java:583)
at com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:467)
at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:447)
at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:416)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
... 20 common frames omitted
Caused by: java.sql.SQLException: null
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3862)
... 42 common frames omitted评论
登录后才可以发表评论
liaosnet发表于 1年前
GBase用户25340发表于 1年前
@liaosnet:并非防断连(空闲连接检测)SQL,是业务上在系统启动的时候,会通过JdbcTemplate执行 select count(1) from 业务表,来查询数据的数量,紧接着提前预热数据处理,现在这样这个业务会出现问题,SQL无法执行
liaosnet发表于 1年前
@GBase用户25340:数据库服务器 onmode -I 201 抓一下201的错误号,会生成af文件,里边会有具体语句。
GBase用户25340发表于 1年前
@liaosnet:找到问题了,确实如你所说,是心跳SQL,默认配置了 select 1
hikari:
#连接池名
pool-name: HikariCP
maximum-pool-size: 100
connection-test-query: select 1
catalog: ${MYSQL_SERVER_NAME}
schema: ${MYSQL_SERVER_NAME}
查看了一下 HikariCP 的源码,发现可以使用 JDBC4 的标准,不走这个逻辑。

hikari:
#连接池名
pool-name: HikariCP
maximum-pool-size: 100
connection-test-query: select 1
catalog: ${MYSQL_SERVER_NAME}
schema: ${MYSQL_SERVER_NAME}
查看了一下 HikariCP 的源码,发现可以使用 JDBC4 的标准,不走这个逻辑。

最佳回答
曾阿牛发表于 1年前
@GBase用户25340:点赞
GBase用户25340发表于 1年前
@liaosnet:刚拍查了一下,发现hakari的心跳检测可以关闭,先把hikari的心跳检测关闭了
liaosnet发表于 1年前
"启动系统时报错 `HikariCP - Driver does not support get/set network timeout for connection"
这个报错可以忽视,现在使用的驱动还不支持这个方法。
这个报错可以忽视,现在使用的驱动还不支持这个方法。
曾浩轩发表于 2个月前
等待有缘人解答。
GBase用户51883发表于 2个月前
不清楚啊。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526
请使用 select 1 from dual (默认是select 1 )