sqltools连接后查不到表结构或执行报“no active connection”,根本原因不是插件未装好,而是连接未手动激活(右键连接名选connect,状态栏图标变绿才算成功)且.sql文件未绑定上下文(需右下角点击切换连接或顶部加-- @sqltools: connection=xxx注释),执行时须用sqltools: run current statement等专用命令并开启sqltools.resultsastable,否则仅输出文本;大数据量查询必须设置sqltools.maxrows限制,否则易卡死。

SQLTools 连接后查不到表结构或执行报 No active connection
不是插件没装好,而是连接没激活或上下文没绑定。SQLTools 默认添加连接后不会自动连接,必须手动触发一次 Connect —— 右键侧边栏里的连接名,选 Connect,看到状态栏数据库图标变绿才算成功。
即使连上了,执行查询时仍可能失败,因为当前 .sql 文件没绑定到该连接:
- 右下角状态栏会显示当前激活的连接名(如
pg-local),点它可切换;若显示No active connection,说明查询根本没发出去 - 可在 .sql 文件顶部加注释指定连接:
-- @sqltools: connection=pg-local,这样打开文件就自动绑定上下文 - 选中语句后右键选
Run Query in Connection(不是Run Query),可绕过全局上下文直接发往指定连接
查询结果只显示文本、不出现表格视图
本质是插件配置或执行路径错了。Database Client 和 SQLTools 原生支持表格,但前提是用对命令、开对开关:
- 必须用插件提供的命令执行,比如
Database: Execute Query或SQLTools: Run Current Statement;按Ctrl+Enter或Run Code是调终端执行文件,只会输出原始文本 - 检查设置里是否启用了表格渲染:
databaseclient.resultsAsTable(Database Client)或sqltools.resultsAsTable(SQLTools),确保值为true - 老版本 MySQL 插件(v3.x 之前)压根不支持表格,必须升级到 v4.x+;mssql 插件则需确认已安装
sqltoolsserviceCLI,否则连结果面板都打不开
EXPLAIN 计划看不到、或者提示 unsupported statement
不是语法写错,而是插件能力边界或数据库方言不匹配。EXPLAIN 是数据库原生命令,但不同插件对它的封装程度差异很大:
- SQLTools 对 PostgreSQL/MySQL 支持
EXPLAIN ANALYZE直接执行并渲染执行计划树;但对 SQLite 只能跑EXPLAIN QUERY PLAN,且不带可视化节点 - mssql 插件的
Estimated Plan按钮只对 SELECT/INSERT/UPDATE/DELETE 有效,DDL(如 CREATE INDEX)或带变量的批处理会静默失败 - 某些云数据库(如 Supabase、AWS RDS)默认禁用
EXPLAIN权限,需 DBA 显式授权pg_read_all_data或PROCESS权限
SELECT * 返回 10 万行导致 VSCode 卡死或内存爆掉
这不是 VSCode 性能差,而是插件没设行数限制,前端强行加载全部数据。所有主流插件都默认不限制返回行,但实际应主动干预:
- SQLTools:在设置中搜
sqltools.maxRows,设为5000或更低;超过此数会截断并提示“Result truncated” - Database Client:
databaseclient.maxRows同理,建议设为1000—— 超过这个量级,应该用LIMIT+OFFSET分页,而不是依赖插件截断 - 真正危险的是没加
LIMIT就执行SELECT *,尤其在生产库上;VSCode 不做任何防护,插件也不会帮你加,全靠人写
最常被忽略的点:表格视图的“复制全部”功能会把整张表(含截断前的真实行数)拉进剪贴板,一粘贴就卡死。真要导出大数据,用插件内置的 CSV 导出,别手选复制。











