应选SQLTools插件连接PostgreSQL/MySQL/SQLite等通用数据库,因其官方维护、支持广泛;SQL Server则必须用微软mssql插件,因SQLTools对其支持不稳定。

VSCode 本身不支持数据库连接或 SQL 补全,必须靠插件实现;没装对插件或连错配置,Ctrl+Shift+E 按了也没反应,表名和列名一个都补不出来。
选哪个插件:SQLTools 还是 mssql?
看数据库类型决定——不是“哪个更好”,而是“哪个能连上”:
- PostgreSQL / MySQL / SQLite / Oracle / Redshift 等通用数据库 → 用
SQLTools(推荐官方维护的sqltools插件) - SQL Server(含 Azure SQL)→ 用微软官方的
SQL Server (mssql)插件,SQLTools对 SQL Server 支持不稳定,容易连不上或补全失效 - 别混着装:两个插件同时启用时,
Ctrl+Shift+E可能绑定到错误插件,执行 SQL 时静默失败
连接配置写错一个字段,就卡在“测试连接中”
常见失败点不在密码,而在端口、实例名或协议细节:
- 本地 SQL Server:服务器名填
localhost不够,得写成localhost\SQLEXPRESS(带实例名)或localhost,1433(显式端口) - PostgreSQL:默认端口是
5432,但很多用户误填5433或留空;密码字段若含特殊字符(如@、/),需 URL 编码(%40替代@) - 环境变量引用要加
${env:PGPASSWORD},不能只写PGPASSWORD;变量未定义时,插件不会报错,而是直接认证失败 - 连接成功后,配置实际存于
.vscode/settings.json,手动编辑时注意 JSON 格式,多一个逗号就会导致整个连接面板不可用
SQL 补全不生效?先检查语言模式和光标位置
补全不是全局生效,它依赖两个硬性前提:
- 文件必须是
.sql后缀,且右下角状态栏显示语言模式为SQL(不是Plain Text);点一下状态栏手动切换 - 光标必须在有效上下文中:比如输入
SELECT * FROM后按Ctrl+Space,才能触发表名补全;若光标在注释里、字符串中或WHERE子句右侧空白处,补全引擎直接跳过 -
SQLTools的列名补全只在已指定表的前提下工作,例如SELECT * FROM users WHERE后无法补全列,但SELECT users.后可以 - 首次连接后需等待几秒,插件才完成元数据加载;此时补全图标可能转圈,强行触发会返回空列表
执行 SQL 却看不到结果?注意输出目标和语句边界
执行行为由插件控制,不是所有选中内容都会跑:
- 默认快捷键
Ctrl+Shift+E(Windows/Linux)或Cmd+Shift+E(macOS)只执行当前光标所在语句块,不是全文;多语句需用分号;显式分隔,否则只执行第一条 - 结果默认输出到 VSCode 底部的
SQLTools或MSSQL面板,不是Output面板;如果没看到结果,先点开侧边栏 SQL 图标,再点底部面板标签 - 某些 DDL(如
CREATE TABLE)执行后无返回集,面板只显示“Query executed successfully”,不是出错 - 如果执行后提示
Error: Connection not found,说明当前文件没关联到任何活动连接——右键 SQL 文件 → “Connect to Database” 手动绑定
最常被忽略的是:连接成功 ≠ 元数据就绪。表名补全延迟几秒属正常,但若等半分钟仍无响应,大概率是权限不足(用户没 SELECT ON pg_tables 权限)或网络策略拦截了元数据查询。这时候看插件日志比重试连接更有用。


















