我也遇到相同的问题,mycat1.6, sysbench1.1
sysbench /usr/local/share/sysbench/oltp_read_only.lua --mysql-user=test --mysql-password=test --mysql-port=8066 --mysql-host=127.0.0.1 --mysql-db=testdb --threads=1 run
sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
FATAL: mysql_stmt_execute() returned error 2013 (Lost connection to MySQL server during query) for query 'BEGIN'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:400: SQL error, errno = 2013, state = 'HY000': Lost connection to MySQL server during query
该命令直接运行在mysql上是没有问题的,mycat后端出现数组越界的提示:
use server prepare, sql: SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN ? AND ? ORDER BY c
2017-08-07 15:15:58.455 WARN [$_NIOREACTOR-2-RW] (io.mycat.net.NIOReactor$RW.run(NIOReactor.java:107)) - caught err:
java.lang.ArrayIndexOutOfBoundsException: 14
at io.mycat.backend.mysql.MySQLMessage.read(MySQLMessage.java:79) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.mysql.ExecutePacket.read(ExecutePacket.java:117) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.server.handler.ServerPrepareHandler.execute(ServerPrepareHandler.java:128) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.FrontendConnection.stmtExecute(FrontendConnection.java:386) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.handler.FrontendCommandHandler.handle(FrontendCommandHandler.java:99) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.FrontendConnection.rawHandle(FrontendConnection.java:478) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.FrontendConnection.handle(FrontendConnection.java:460) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.AbstractConnection.onReadData(AbstractConnection.java:321) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOSocketWR.asynRead(NIOSocketWR.java:190) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.AbstractConnection.asynRead(AbstractConnection.java:273) ~[Mycat-server-1.6-RELEASE.jar:?]
at io.mycat.net.NIOReactor$RW.run(NIOReactor.java:102) ~[Mycat-server-1.6-RELEASE.jar:?]
我用java写了个预处理的测试了下 SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN ? AND ? ORDER BY c这个语句,发现这个语句执行提示空指针错误。即使不使用预处理的语句,在mycat中直接执行这个语句也是有问题,测试如下:
mysql> select c from sbtest1 where id between 0 and 10700 group by c order by c;
ERROR 1105 (HY000): java.lang.NullPointerException
测试表的全部数据如下,表按k mod分片
mysql> select * from sbtest1;
+-------+-----+---+-----+
| id | k | c | pad |
+-------+-----+---+-----+
| 10608 | 4 | d | dd |
| 10611 | 7 | d | dd |
| 10614 | 10 | d | dd |
| 10700 | 11 | d | dd |
| 10607 | 3 | c | cc |
| 10610 | 6 | d | dd |
| 10613 | 9 | d | dd |
| 10615 | 111 | d | dd |
+-------+-----+---+-----+
8 rows in set (0.06 sec)