You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Deno使用denodb连接MySQL关闭后CLI进程挂起无法退出问题

问题根因
  • denodb@v1.0.39版本的MySQLConnector在实例化阶段就会初始化底层MySQL连接池,连接池自带的存活心跳逻辑会持有Deno事件循环的活跃引用,哪怕没有实际发起连接、没有执行任何SQL操作,也会导致进程无法自动退出。
  • 该版本的资源关闭逻辑存在疏漏,调用db.close()和connection.close()后也没有正确释放连接池持有的定时器、连接引用,因此执行完所有代码后进程仍然会挂起。
解决方案

临时方案(适配现有版本)

在脚本所有逻辑执行完毕后,主动调用Deno.exit(0)强制终止进程即可,修改后的代码如下:

import { MySQLConnector, Database } from 'https://deno.land/x/denodb@v1.0.39/mod.ts';

console.log('I LOGGED 1');

const connection = new MySQLConnector({
    host: '127.0.0.1',
    database: 'db_name',
    username: 'db_user',
    password: 'db_pass'
});

console.log('I LOGGED 2');

const db = new Database(connection);

console.log('I LOGGED 3');

await db.close();
await connection.close();

console.log('I LOGGED 4');
// 新增此行强制退出进程
Deno.exit(0);

长期方案

该问题属于denodb v1.0.39的已知缺陷,更换更高版本的denodb依赖,或直接使用Deno官方维护的MySQL驱动操作数据库,即可从根源避免进程挂起的问题。

内容的提问来源于stack exchange,提问作者LoveDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:30:01