vscode 本身不能连接 sql 数据库,必须装对扩展、配对驱动、填准参数,三者缺一不可;连不上八成是驱动没装或 driver 字段写错大小写。sqltools(作者 mtxr)是唯一长期维护、支持多数据库的主流方案,但需额外安装对应驱动:postgresql 驱动字段必须写 postgresql(首字母大写),mysql 写 mysql,sqlite 写 sqlite 且不需 host/port,sql server 推荐官方 mssql 扩展。host 填 127.0.0.1 更可靠,database 必填,密码含特殊字符须 url 编码,连接后须右键 connect 激活,状态栏出现绿色图标才算成功,执行 sql 前需确保右上角已选中该连接,快捷键为 ctrl+enter(win/linux)或 cmd+enter(mac)。

VSCode 本身不能连接 SQL 数据库,必须装对扩展、配对驱动、填准参数,三者缺一不可;连不上八成是驱动没装或 driver 字段写错大小写。
SQLTools + 对应驱动是当前最稳的组合
别搜“SQL 插件”就随便点安装——很多只做语法高亮,根本不能执行查询。SQLTools(作者 mtxr)是唯一长期维护、支持多数据库、带连接管理+结果表格+结构浏览的主流方案。但它不自带驱动,必须额外安装:
- PostgreSQL:装
SQLTools PostgreSQL Driver,driver字段必须写PostgreSQL(首字母大写,不是postgres或postgresql) - MySQL/MariaDB:装
SQLTools MySQL/MariaDB Driver,driver填MySQL - SQLite:装
SQLTools SQLite Driver,driver填SQLite,且不用填host/port,只写database路径(如./data.db,路径相对项目根目录) - SQL Server:用 Microsoft 官方
mssql扩展,但需额外装sqltoolsserviceCLI 工具,否则点查询直接报Command 'MSSQL: New Query' resulted in an error
装错驱动或大小写不匹配,连接时会卡在 “Connecting…” 或报 Driver not found,而不是具体错误提示。
连接配置里最容易填错的三个字段
很多人填完 host/port/user/pass 就点连接,结果失败。关键陷阱在:
-
host:本地 PostgreSQL 默认走 Unix socket,填localhost可能失败,应改用127.0.0.1强制走 TCP -
database:留空会连默认库(通常是同用户名的库),但多数生产环境禁用该库,导致connection refused -
ssl:云数据库(如 AWS RDS、Supabase)强制要求require或verify-full,漏配就是超时,不是认证失败 - 密码含
@、/等字符?必须 URL 编码,比如pass@word得写成pass%40word,否则解析连接串直接失败
执行 SQL 时为什么总查不到结果或报空查询
连接成功 ≠ 查询能跑通。常见断点在上下文和语句边界:
- 执行前必须右键连接项选
Connect,看到状态栏数据库图标变绿才算激活;否则即使下拉框里有名字,也会报No active connection found - 快捷键
Ctrl+Enter(Win/Linux)或Cmd+Enter(Mac)默认只运行“光标所在语句块”,以分号;或空行为界——光标在注释里、空行上、或语句末尾没加分号,就会报Query is empty - 想执行多条语句?必须先手动选中它们(支持跨行),再按快捷键;否则只跑第一条
- DDL 语句(如
CREATE TABLE)不返回结果集,错误只出现在输出面板(Ctrl+Shift+U),别盯着下方结果区等表格
中文乱码、结果截断、参数化查询不生效
这些不是连接问题,而是会话层配置被忽略:
- 中文变问号?不是文件编码问题,是连接时没设
client_encoding=utf8(PostgreSQL)或charset=utf8mb4(MySQL);SQLTools 不自动传这些参数,得在连接配置里加options字段手动塞进去 - 结果超 1000 行被截断?那是
database-client.maxRows(Database Client)或 SQLTools 的隐式限制,得进设置里调高 - 参数化查询(如
SELECT * FROM users WHERE id = $1)仅部分驱动支持,SQLite 和旧版 PostgreSQL 驱动可能直接当字面量处理,不防注入
真正的难点不在“怎么连”,而在连上之后的会话控制——编码、时区、参数绑定、事务隔离,这些都得靠驱动能力和配置项撑住,不是图形向导点点就能覆盖的。











