bounty还有2天到期。回答此问题可获得+50声望奖励。Abhishek Jain希望引起更多关注这个问题。
我们希望在某个阈值之后使查询超时。我们尝试在下面的代码片段中的多个位置添加socketTimeout标志。它不适用于NodeJS中的TypeORM框架的MariaDB。请帮帮我
const { createConnection } = require("typeorm");
const mariadb = require("mariadb");
async function main() {
const connection = await createConnection({
type: 'mariadb',
host: 'hostname',
port: 3306,
username: 'db username',
password: 'db password',
database: 'db name',
connectTimeout: 5000, // 5 seconds
socketTimeout: 10,
extra: {
socketTimeout: 10,
queryTimeout: 10
}
});
// use the connection here
const results = await connection.query('query string');
console.log(results);
}
main().catch((error) => {
console.error(error);
});
1条答案
按热度按时间68bkxrlz1#
通过这种配置,您实际上将使用mysql或mysql2连接器。
mysql和mysql2连接器不允许查询超时。mariadb连接器可以,但经过验证,由于https://jira.mariadb.org/browse/CONJS-249的原因,它实际上与typeorm不兼容(这将在下一个3.1.2版本中纠正)。
因此,如果您使用mariadb服务器,实际上只有2种解决方法在创建连接后,您可以使用以下命令指示查询默认超时:
或每个查询前置查询“SET STATEMENT max_statement_time=x”,如
编辑:自3.1.2版本以来,可以使用以下命令完成: