推荐使用sqltools+对应驱动扩展,它支持多数据库且语法解析动态切换;需手动配置默认格式化工具为mtxr.sqltools,并关闭formatontype;如需自定义风格,应改用pgformatter或sqlfluff等cli工具。

VSCode 本身不内置 SQL 支持,格式化和语法高亮必须靠扩展,且不同数据库(PostgreSQL、MySQL、SQL Server)的语法差异会导致同一段 SQL 在不同插件下报错或格式错乱。
安装哪个 SQL 扩展才靠谱
别装“SQL Server”或“MySQL”这种带厂商名的单一扩展——它们只认自家方言,遇到 CREATE OR REPLACE FUNCTION(PostgreSQL)或 WITH RECURSIVE 就直接标红。推荐用 SQLTools + 对应驱动,它把语言服务和连接逻辑分离,支持 PostgreSQL / MySQL / SQLite / SQL Server / Oracle 等 10+ 数据库,且语法解析基于实际连接的数据库类型动态切换。
安装步骤:
- 在扩展市场搜
SQLTools,装官方出品的那个(作者是mtxr) - 再装对应驱动:比如用 PostgreSQL 就额外装
SQLTools PostgreSQL Driver - 重启 VSCode,打开
.sql文件,状态栏左下角会显示当前激活的方言(如PostgreSQL)
SQL 格式化为什么按了 Ctrl+Shift+I 没反应
VSCode 默认的格式化快捷键不绑定 SQL,且 SQLTools 不接管全局格式化,必须手动指定默认格式化工具。常见错误是只装了扩展但没设 "editor.defaultFormatter",或者设成了 vscode.sql-language-features(这是 VSCode 自带的弱支持,不支持自定义规则)。
正确配置方式(在 settings.json 中):
{
"[sql]": {
"editor.defaultFormatter": "mtxr.sqltools",
"editor.formatOnSave": true,
"editor.formatOnType": false
}
}
注意:"editor.formatOnType": false 是关键——SQL 里写 WHERE 后自动换行会打断输入流,关掉更顺手。
如何让格式化符合团队 SQL 风格(比如关键字大写、逗号前置)
SQLTools 的格式化能力依赖后端驱动,而它的 PostgreSQL/MySQL 驱动目前不支持自定义大小写或逗号位置。真要强控风格,得换方案:
- 用
pgFormatter(PostgreSQL 专用)或sqlfluff(跨库,需 CLI 配置),然后在 VSCode 里把它们设为defaultFormatter - 例如用
sqlfluff:先pip install sqlfluff,再在settings.json加:"sqlfluff.formatArgs": ["--dialect", "postgres", "--rules", "L010,L034"]
- 注意
sqlfluff的L010控制关键字大小写,L034强制逗号前置——这些规则名必须写对,拼错就无效
连接数据库后执行 SQL 却提示“Cannot read property 'query' of undefined”
这是 SQLTools 驱动未正确初始化的典型错误,90% 出现在 Windows 上使用 PostgreSQL 时:插件调用了 pg 包,但系统没装 Visual C++ 运行库,导致二进制驱动加载失败。
排查步骤:
- 打开命令面板(Ctrl+Shift+P),运行
SQLTools: Show Output,看日志里有没有Cannot load native module - 如果看到,去微软官网下载安装
Microsoft Visual C++ 2015–2022 Redistributable(x64 版) - 重装
SQLTools PostgreSQL Driver扩展(不是重装SQLTools主体) - 确认连接配置里的
host别写成localhost——某些环境下 DNS 解析慢会导致超时,改用127.0.0.1
连接字符串里密码含特殊字符(如 @、/)必须 URL 编码,否则驱动解析失败,但错误提示完全不相关——这点最容易卡住人。











