优先选sqltools+对应驱动或database client(cweijan版):前者需手动装驱动并重启vscode,后者配置直白但postgresql须设"ssl":false;单体插件因停更、不跨库、认证不兼容应避免。

连不上、补不了、执行没反应——不是 VSCode 不行,是插件选错或配置漏项。SQL 语句写得再标准,没走对连接路径,就等于在空白画布上写代码。
该装哪个插件:SQLTools 还是 Database Client?
看数据库类型决定,不是看星级或名字里有没有“SQL”:
- PostgreSQL / MySQL / SQLite / Oracle → 用
SQLTools(官方维护,驱动分离,稳定性高);装完必须再装对应驱动,比如SQLTools PostgreSQL Driver - SQL Server(含 Azure SQL)→ 只能用微软官方
mssql插件;SQLTools对 SQL Server 支持断续,常卡在“测试连接中”或列名不补全 - 别同时启用
SQLTools和Database Client;快捷键Ctrl+Shift+E或Ctrl+Enter会绑定到其中一个,另一个静默失效 - 旧版
SQLTools(v0.x)已停更,连接 PostgreSQL 时可能报pg.connect is not a function,务必换 v1.x+
连接配不成功?先查这三处硬性字段
90% 的“连不上”问题出在协议细节,而不是密码错误:
- PostgreSQL:端口必须填
5432(不是空着、不是5433);密码含@要 URL 编码成%40,否则解析失败 - SQL Server 本地实例:服务器名不能只写
localhost,得是localhost\SQLEXPRESS(双反斜杠)或localhost,1433(显式端口) - MySQL 8.0+:默认认证插件是
caching_sha2_password,VSCode 插件多数不支持;需进命令行执行ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass'; - 所有插件的
driver字段大小写敏感:"driver": "PostgreSQL"有效,"driver": "postgresql"会直接忽略连接
SQL 补全为啥不弹?两个前提缺一不可
补全不是“装了就灵”,它依赖文件上下文和语法位置:
- 文件后缀必须是
.sql,且右下角状态栏显示语言模式为SQL(不是Plain Text);点一下手动切过去 - 光标必须在可推导上下文的位置:比如输入
SELECT * FROM users WHERE后按Ctrl+Space,不会补列名;但输入SELECT users.后按,就能列出users表所有字段 - 首次连接后需等 3–5 秒,插件才加载完元数据;此时补全才开始生效,别刚点完 Connect 就狂按空格
- SQLite 连接若用相对路径,如
"database": "./data.db",路径是相对于 VSCode 启动目录,不是当前打开的文件夹
执行查询总失败?注意语句边界与会话隔离
执行行为由光标/选中范围 + 当前活动连接共同决定,不是全局生效:
- 快捷键
Ctrl+Alt+R(Windows/Linux)或Cmd+Alt+R(Mac)运行“当前语句”,逻辑是:从光标位置向前找最近的分号或空行,向后同理;没加分号就可能只执行半句 - 多语句必须用分号分隔:
SELECT 1; SELECT 2;可以;SELECT 1 SELECT 2不行,第二条被跳过 - 一个
.sql文件可以混用多个连接:选中某段 → 右键 →Run Current Statement in Connection,不依赖右上角下拉框选中的那个 - DDL 语句(如
CREATE TABLE)执行后无结果集,错误只出现在输出面板(Ctrl+Shift+U),别盯着空表格等返回
最易被忽略的是连接与执行的“两层绑定”:插件配置里保存的是连接定义,而执行时真正起作用的是“当前活动连接”状态——它可能在侧边栏里是绿色,但在编辑器右上角下拉框里却选了另一个未连接的条目。这种错位不会报错,只会安静地提示 No active connection found。











