状态显示“正在发送数据”或“正在写入网络”的mysql查询无法通过statement.cancel()方法取消

问题描述 投票:0回答:1

我做了一个mysql查询,连接两个大表,没有

on
条件过滤器, 比如
select * from a,b

我点击

show processlist
命令并显示 sql 状态为
Sending data
,然后我调用我的代码
statement.cancel()

我认为查询已被终止,但查询仍处于

Sending data
状态。我注意到 mysql 实现执行以下代码

if (!this.statementExecuting.get()) {
     return;
}

有人可以通过其他方式取消此类查询吗?

mysql jdbc connector cancellation
1个回答
0
投票

您是否尝试过中断等待查询执行完成的线程?

我假设您正在运行多个线程,因为您可以在执行语句时调用

statement.cancel()
。所以你应该能够获得该线程的引用并对其调用
thread.interrupt()

不确定 JDBC 驱动程序将如何处理 InterruptedException - 也许您必须在代码中注意它。

© www.soinside.com 2019 - 2024. All rights reserved.