dble icon indicating copy to clipboard operation
dble copied to clipboard

JDBC设置useCursorFetch=true时,DBLE兼容mysql-connector-java-8.0.27问题

Open xhailiang opened this issue 2 years ago • 0 comments

  1. 问题描述: 使用mysql-connector-java-8.0.27版本,jdbc url 设置useCursorFetch=true 时,某些SQL在prepare 阶段报错。

  2. 版本信息:

  • DBLE : 8.0.27-dble-3.21.10.1-0b245c11a60737aa0d7504de635bb6e89378445d-20220127041458
  • JDBC Connector : mysql-connector-java-8.0.27
  1. 日志信息:
  • 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

  1. 应用报错信息
Cause: java.sql.SQLException: 23;
uncategorized SQLException; SQL state [HY000]; error code [1105]; 23; nested exception is java.sql.SQLException: 23

xhailiang avatar Sep 27 '22 02:09 xhailiang