我正在使用QSqlDatabase并且正在尝试找到一种方法来终止正在运行的查询(这是我编写的SQL客户端的必要功能)
有没有办法获取正在运行的查询的ID? (计划是在另一个连接中执行kill / pg_cancel_backend命令 - 需要支持PostgreSQL + MySQL)
我已经考虑过监听相同查询的进程列表,但是如果它被终止的原因是因为它运行了两次并且用户只想杀死一个特定的查询呢? (这会使该方法不准确,也会超级hacky)
编辑:我与QSqlDatabase没有超级联系(除了它是我正在使用的框架的一部分)所以我不介意使用别的东西,如果它&#39 ; s是唯一的方法,但能够使用它肯定会很好。
我绝对没有想法,所以任何事情都会受到超级赞赏!
答案 0 :(得分:1)
在Postgres中,您可以通过执行
来识别后端进程id
select pg_backend_pid();
在建立连接之后。在您关闭连接之前,id
保持不变。
这个函数的MySQL等价物是CONNECTION_ID ()
。