Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在Sequelize中设置查询超时?_Mysql_Node.js_Sequelize.js - Fatal编程技术网

Mysql 如何在Sequelize中设置查询超时?

Mysql 如何在Sequelize中设置查询超时?,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我想看看如何在Sequelize中设置查询的超时时间 我已经在Sequelize文档中查找了一些信息,但我无法完全找到我要查找的内容。我找到的最接近的选项是“pools.acquire”,但我不是要设置传入连接的超时,而是要设置正在进行的查询的超时,以便快速短路死锁 以下是我的示例代码: const db = new Sequelize( database, username, password, { host : hostname, dialect: "mysql", def

我想看看如何在Sequelize中设置查询的超时时间

我已经在Sequelize文档中查找了一些信息,但我无法完全找到我要查找的内容。我找到的最接近的选项是“pools.acquire”,但我不是要设置传入连接的超时,而是要设置正在进行的查询的超时,以便快速短路死锁

以下是我的示例代码:

const db = new Sequelize( database, username, password, {
  host   : hostname,
  dialect: "mysql",
  define : {},
  pool: {
    max : 10,
    min : 0,
    idle: 10000
  },
})

如有任何见解,将不胜感激

添加
方言选项

  const db2 = new Sequelize(database, username, password, {
    host: hostname,
    dialect: "mysql",
    define: {},
    dialectOptions: {
      options: {
        requestTimeout: 3000
      }
    },
    pool: {
      max: 10,
      min: 0,
      idle: 10000
    },
  });

在我的例子中,将requestTimeout字段直接添加到DiagnolOptions对象中是有效的:

const db2 = new Sequelize(database, username, password, {
  host: hostname,
  dialect: "mysql",
  define: {},
  dialectOptions: {
    requestTimeout: 3000
  },
  pool: {
    max: 10,
    min: 0,
    idle: 10000
  }
});

续集版本:^4.42.0

打开本地文件
节点\u模块/_mysql@2.17.1@mysql/lib/ConnectionConfig.js

this.connectTimeout
的默认值更改如下:

  this.connectTimeout     = (options.connectTimeout === undefined)
    ? (10 * 10000)
    : options.connectTimeout;

如果有人在这里无意中查找Postgres特定的查询超时配置,则sequelize v5中的情况如下:

dialectOptions: {
  statement_timeout: 1000,
  idle_in_transaction_session_timeout: 5000
}
这会将语句超时设置为1s,将事务会话中的空闲超时设置为5s。
参考

对于Sequelize v6和mysql2驱动程序,以下代码正在运行

export const database = new Sequelize(
    Config.get('DB.NAME'),
    Config.get('DB.USER'),
    Config.get('DB.PASS'),
    {
        host: Config.get('DB.HOST'),
        port: 3306,
        dialect: 'mysql',
        dialectOptions: { connectTimeout: isDevEnv ? 15000 : 5000 }
    });
    

我也有同样的问题,但我正在使用我的http://localhost:8888 作为我的端口,在我将端口更改为MySQL端口8889之前,除了上一个数字外,它看起来是一样的,我没有太注意看到差异,而使用MAMP时,您需要检查显示端口和主机的MySQL服务器详细信息的网页。

显然还不受支持:最好是为MySQL“选项”指定“连接超时”。如果您的
pg
包太旧,则可能不支持这些设置。