先手动将右下角语言模式设为sql,再安装sqltools或mssql等含language server的插件,配置默认格式化器并确保数据库连接成功,方可实现高亮、补全与执行。

SQL文件右下角显示Plain Text?先切语言模式
VSCode 默认不把 .sql 文件当 SQL 处理,哪怕你刚新建一个 query.sql,状态栏也可能显示 Plain Text。这时候高亮、提示、格式化全失效——不是插件没装,是根本没“启动”SQL能力。
实操建议:
- 点击右下角
Plain Text,在弹出菜单里搜sql,选SQL(注意不是MySQL或PostgreSQL,基础高亮用这个就够了) - 快捷键更稳:
Ctrl+K M(Windows/Linux)或Cmd+K M(macOS),输sql回车 - 永久绑定:打开
settings.json,加这一行:"files.associations": {"*.sql": "sql"}
如果点了还是不亮,检查有没有其他插件劫持了 .sql 关联(比如某些数据库客户端会强制设成自己的语言模式)。
装了插件却没提示?language server 没跑起来
只装名字带 “Highlight” 或 “Syntax” 的纯着色插件,是看不到表名、字段、函数补全的。真正提供智能提示的是能启动 language server 的插件,比如 SQLTools 或微软官方的 mssql。
常见现象:
-
SELECT *后没字段列表 -
FROM后敲空格,无任何表名下拉 - 状态栏没出现连接图标或 loading 动画
排查方法:
- 打开开发者工具:
Ctrl+Shift+P→Developer: Toggle Developer Tools→ 切到Console标签,看有没有SQLTools或mssql报错,比如spawn ENOENT(找不到mysql或psql命令)或connection refused -
mssql插件默认不启 server,得手动开:"mssql.enableIntelliSense": true -
SQLTools必须先建连接——哪怕只是连本地sqlite3文件,否则补全引擎压根不加载
格式化后关键字全小写?插件配置不匹配
VSCode 本身不格式化 SQL,必须装插件并显式指定它为默认 formatter。很多人装了 SQL Formatter 却按 Shift+Alt+F 没反应,就是因为没设对 provider ID。
关键步骤:
- 打开命令面板:
Ctrl+Shift+P→Preferences: Configure Language Specific Settings→ 选SQL - 在弹出的
settings.json片段里加两行:
"editor.defaultFormatter": "cdsama.sql-formatter", "editor.formatOnSave": true
注意:cdsama.sql-formatter 是插件 ID,不同插件值不同——SQL Formatter(adpyke)用的是 sqlformatter,vscode-sql-formatter(bradymholt)用的是 vscode-sql-formatter,大小写和连字符必须完全一致。
如果想让 SELECT、WHERE 大写,查插件是否有 sql.format.uppercase 这类配置项;没有就换插件,别硬改源码。
连上数据库还提示不了字段?连接没生效或权限不对
即使你填了 host/port/user/password,也不代表补全就自动来了。SQLTools 的补全依赖连接成功后拉取的元数据,而很多问题卡在“看似连上了,其实没通”。
典型卡点:
- 连接配置里填了
localhost,但数据库实际监听127.0.0.1(或反过来),尤其 Docker 场景下容易错 - PostgreSQL 没开
pg_hba.conf的本地连接权限,MySQL 没给用户SHOW DATABASES和SHOW TABLES权限 - 连接成功了,但你在普通
.sql文件里写语句——补全只在 SQLTools 自带的查询编辑器(右键 →Create Query Editor)里生效 - 连接信息明文存在
~/.sqltools/config.json,别放生产库密码;用 SSH 隧道或 Docker 网络时,确保端口可达,插件不处理网络层转发
最易被忽略的一点:补全依赖 schema 名字。如果你连的是 public schema 以外的库,又没在查询里显式写 schema.table,有些插件会直接不提示——不是 bug,是设计如此。











