gpt4 book ai didi

mysql - 如何根据请求获取有关连接 ID 的信息?

转载 作者:行者123 更新时间:2023-11-30 21:32:15 25 4
gpt4 key购买 nike

我想在执行长查询时获取连接 ID (threadId),以防前端用户 (Vue.js) 想要取消查询(以防查询永远不会结束...)。所以当用户点击“停止查询”时,我会在 Mysql 上执行 KILL (threadId)..

我正在使用 know (client=mysql) 的池。我相信这是微不足道的事情,但请有人描述我如何访问它。我的后端 (node.js) 设置不同 - - 是由一个聪明的人制作的,他按如下方式定义池和连接:

connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}

console.log('connected as id ' + connection.threadId);
});
const knex = require("knex");

// Helpers -------------------------------------------------------------------
const connection = (user, password) =>
knex({
client: "mysql",
connection: {
multipleStatements: true,
host: process.env.MYSQL_IP,
port: process.env.MYSQL_PORT,
user,
password,
database: "",
dateStrings: true,
idleTimeoutMillis: -1
},
debug: true,
pool: {
min: 0,
max: 7
}
});

const knex_session = pool => (user, password) => {
if (pool[user] === undefined) {
pool[user] = connection(user, password);
}
return pool[user];
};

// Pool ----------------------------------------------------------------------
const connections = {};

// Exports -------------------------------------------------------------------
exports.admin = connection(
process.env.MYSQL_USERNAME,
process.env.MYSQL_PASSWORD
);
exports.client = knex_session(connections);

// ---------------------------------------------------------------------------

我正在寻找一种以某种方式获取 mysql threadId 的方法 - 我从函数(路由)中想象。其他选项是对 mysql 的另一个调用 (SELECT CONNECTION_ID()) 或通过某种方式从请求对象中提取他的数据(但是,这里也没有成功)。然后我会执行 KILL QUERY (threadId) 以确保查询不会挂起并且我可以向用户显示正确的 vue 组件。

最佳答案

正如您所发现的,MySQL connection id作为连接对象的一个​​属性被发现:connection.threadIdknex 也是如此,因为它位于 mysql 上.

只要它在范围内,您就可以从连接对象中获取它,并将它放在一个有用的地方……如果您在 express 中,就像这样。

    function whatever (req, res, next) {
...
res.dbmsThreadId = connection.threadId
...
}

关于mysql - 如何根据请求获取有关连接 ID 的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55596460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com