UnhandledPromiseRejectionWarning: KnexTimeoutError: Knex: Timeout acquiring a connection
UnhandledPromiseRejectionWarning: KnexTimeoutError: Knex: Timeout acquiring a connection
我正在尝试将数据库连接到我的 Telegram 机器人,我想为此使用 knex。
我使用 MySQL。数据库和 table 已创建。我也可以在 /phpMyAdmin 页面上看到它,所以它可以工作(我使用了与我的代码中使用的相同的凭据)。我已经仔细检查了配置数据,这是正确的。
这是客户端创建代码:
this.knex = knex({
client: "mysql",
connection: {
host: this.config.HOST,
port: this.config.PORT,
user: this.config.USERNAME,
password: this.config.PASSWORD,
database: this.config.DATABASE,
},
//I've added next line, cuz I was thinking there is pool error, but it didn't work
pool: { min: 0, max: 7 },
});
我把它放在我的 class 里了。这是方法,我正在尝试调用(None of console.logs works):
async getManagers() {
const managers = await this.knex
.select("*")
.from("users")
.where("isManager", 1)
.then((data) => {
console.log(data);
});
console.log(managers);
}
我绝对确定我有一个名为 user
的 table 和其中的字段 isManager
。
我是这样称呼它的:
const dbDataService = new DBDataService(databaseConfiguration);
dbDataService.getManagers();
我一直收到这个:
(node:31227) UnhandledPromiseRejectionWarning: KnexTimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
at Client_MySQL.acquireConnection (/project/node_modules/knex/lib/client.js:348:26)
(node:31227) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
如果有帮助,我会添加我的依赖列表:
"dependencies": {
"dotenv": "^11.0.0",
"mysql": "^2.1.0",
"knex": "^0.21.1",
"log4js": "^6.3.0",
"node-telegram-bot-api": "^0.56.0"
}
我尝试使用不同的 knex 版本 (1.0.1),但仍然出现此错误。我已经花了一整天的时间来完成这项工作,但仍然无法弄清楚。希望你们中有人能帮助我。谢谢。
实际上,我搞砸了 PORT。我应该使用 3306,而不是 80。
我正在尝试将数据库连接到我的 Telegram 机器人,我想为此使用 knex。 我使用 MySQL。数据库和 table 已创建。我也可以在 /phpMyAdmin 页面上看到它,所以它可以工作(我使用了与我的代码中使用的相同的凭据)。我已经仔细检查了配置数据,这是正确的。 这是客户端创建代码:
this.knex = knex({
client: "mysql",
connection: {
host: this.config.HOST,
port: this.config.PORT,
user: this.config.USERNAME,
password: this.config.PASSWORD,
database: this.config.DATABASE,
},
//I've added next line, cuz I was thinking there is pool error, but it didn't work
pool: { min: 0, max: 7 },
});
我把它放在我的 class 里了。这是方法,我正在尝试调用(None of console.logs works):
async getManagers() {
const managers = await this.knex
.select("*")
.from("users")
.where("isManager", 1)
.then((data) => {
console.log(data);
});
console.log(managers);
}
我绝对确定我有一个名为 user
的 table 和其中的字段 isManager
。
我是这样称呼它的:
const dbDataService = new DBDataService(databaseConfiguration);
dbDataService.getManagers();
我一直收到这个:
(node:31227) UnhandledPromiseRejectionWarning: KnexTimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
at Client_MySQL.acquireConnection (/project/node_modules/knex/lib/client.js:348:26)
(node:31227) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
如果有帮助,我会添加我的依赖列表:
"dependencies": {
"dotenv": "^11.0.0",
"mysql": "^2.1.0",
"knex": "^0.21.1",
"log4js": "^6.3.0",
"node-telegram-bot-api": "^0.56.0"
}
我尝试使用不同的 knex 版本 (1.0.1),但仍然出现此错误。我已经花了一整天的时间来完成这项工作,但仍然无法弄清楚。希望你们中有人能帮助我。谢谢。
实际上,我搞砸了 PORT。我应该使用 3306,而不是 80。