dble
dble copied to clipboard
JDBC设置useCursorFetch=true时,DBLE兼容mysql-connector-java-8.0.27问题
-
问题描述: 使用mysql-connector-java-8.0.27版本,jdbc url 设置useCursorFetch=true 时,某些SQL在prepare 阶段报错。
-
版本信息:
- DBLE : 8.0.27-dble-3.21.10.1-0b245c11a60737aa0d7504de635bb6e89378445d-20220127041458
- JDBC Connector : mysql-connector-java-8.0.27
- 日志信息:
- general.log
2022-09-23T16:54:19.022 8116 Connect dble-user@hostname on test_sharding_db using TCP/IP
2022-09-23T16:54:19.023 8116 Query /* mysql-connector-java-8.0.27 (Revision: e920b979015ae7117d60d72bcc8f077a839cd791) */SELECT @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS character_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@collation_server AS collation_server, @@collation_connection AS collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS max_allowed_packet, @@net_write_timeout AS net_write_timeout, @@performance_schema AS performance_schema, @@sql_mode AS sql_mode, @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@transaction_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout
2022-09-23T16:54:19.024 8116 Query SET character_set_results = NULL
2022-09-23T16:54:19.025 8116 Query SET autocommit=1
2022-09-23T16:54:19.028 8116 Query select 1
2022-09-23T16:54:19.030 8116 Query SELECT @@session.transaction_read_only
2022-09-23T16:54:19.030 8116 Query SELECT @@session.transaction_isolation
2022-09-23T16:54:19.080 8116 Prepare select
col1, col2, col3
from table_name
where col2 = ?
and col3 in ('S','F')
and col4 is not null
2022-09-23T16:54:19.113 8116 Close stmt
此时应用和DBLE都出现报错信息,SQL 没有进入Executed 阶段
- dble.log
2022-09-23 16:54:19.090 WARN [BusinessExecutor0] (com.actiontech.dble.services.FrontendService.consumeSingleTask(FrontendService.java:195)) - There is an error you may need know.
java.lang.ArrayIndexOutOfBoundsException: 23
at com.actiontech.dble.backend.mysql.MySQLMessage.read(MySQLMessage.java:61) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.backend.mysql.MySQLMessage.readDate(MySQLMessage.java:265) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.backend.mysql.BindValueUtil.read(BindValueUtil.java:52) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.net.mysql.ExecutePacket.read(ExecutePacket.java:121) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.server.handler.ServerPrepareHandler.execute(ServerPrepareHandler.java:144) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.services.mysqlsharding.ShardingService.stmtExecute(ShardingService.java:369) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.services.mysqlsharding.ShardingService.handleInnerData(ShardingService.java:283) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.net.service.AbstractService.consumeSingleTask(AbstractService.java:184) ~[dble-3.21.10.1.jar:?]
at com.actiontech.dble.services.FrontendService.consumeSingleTask(FrontendService.java:184) [dble-3.21.10.1.jar:?]
at com.actiontech.dble.services.FrontendService.execute(FrontendService.java:139) [dble-3.21.10.1.jar:?]
at com.actiontech.dble.net.executor.FrontendBlockRunnable.run(FrontendBlockRunnable.java:60) [dble-3.21.10.1.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_271]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_271]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_271]
2022-09-23 16:54:19.090 WARN [BusinessExecutor0] (com.actiontech.dble.singleton.ConnectionSerializableLock.unLock(ConnectionSerializableLock.java:70)) - find useless unlock. connection id : 8116 , index : 8
- 应用报错信息
Cause: java.sql.SQLException: 23;
uncategorized SQLException; SQL state [HY000]; error code [1105]; 23; nested exception is java.sql.SQLException: 23