“No active connection”错误本质是DBeaver找不到有效Connection对象执行SQL,主因是连接空闲超时、服务端断连或SQL编辑器未显式绑定数据源与模式。

“连接已关闭”不是DBeaver崩了,而是它检测到当前连接已不可用——通常发生在连接空闲超时、服务端主动断连、或会话上下文丢失之后。
为什么执行SQL时突然报“No active connection”
这个错误本质是DBeaver找不到一个有效的Connection对象来执行语句。常见触发场景包括:
- 连接空闲超过数据库的
wait_timeout或interactive_timeout(MySQL默认8小时,但很多云数据库设为300秒) - 手动点击了“断开连接”,但没注意SQL编辑器仍开着
- 切换了数据库导航树中的节点,导致当前SQL编辑器绑定的数据源/模式(schema)变成
N/A - 使用了SSH隧道或代理,中间链路中断后DBeaver未自动重连
检查并恢复当前SQL编辑器的连接上下文
DBeaver的SQL编辑器不自动继承连接状态,必须显式绑定数据源和模式。看到No active connection,先看编辑器顶部工具栏:
- 数据源显示为
N/A→ 点击右侧下拉箭头,选中你目标数据库实例 - 模式(Schema)显示为
N/A→ 点击模式位置,从列表中选一个具体数据库名(如myapp_prod) - 如果下拉列表为空,说明该连接未成功加载元数据:右键连接 → 刷新元数据,或先双击连接确保已连上
防止连接被服务端强制关闭(关键配置)
数据库服务端不会永远等你。要让DBeaver保持活跃连接,得双向配合:
- 在连接配置中启用保活:右键连接 → 编辑连接 → “初始化”页签 → 勾选
连接保持,填入60(单位秒,建议≤服务端interactive_timeout值的一半) - 部分数据库需额外加JDBC参数:比如MySQL,在连接URL末尾追加
&autoReconnect=true&socketTimeout=30000;PostgreSQL可加tcpKeepAlive=true - 避免依赖“后台常驻连接”:DBeaver不是长连接守护进程,它的保活机制仅作用于当前打开的编辑器/查询窗口,关掉就失效
连接已关闭但编辑器里还有未保存SQL怎么办
别急着重写。直接操作比新建更省事:
- 快捷键
Ctrl+](Windows/Linux)或Cmd+](macOS):在当前数据库节点上快速新建一个已绑定上下文的SQL编辑器 - 把原编辑器里的SQL全选复制,粘贴进新编辑器,立刻可执行
- 如果连右键菜单都点不动(说明连接对象已销毁),那就必须先双击连接图标重连,再走上面步骤
最易被忽略的一点:保活设置只对新建立的连接生效,已断开的连接不会自动恢复——你得亲手点一下“连接”按钮,或者等它下次被SQL执行动作触发重连(前提是配置了autoReconnect且驱动支持)。











