vscode本身不运行sql脚本,需依赖插件调用数据库驱动执行;必须正确安装插件、手动激活连接(状态栏绿色图标为唯一标识)、配置sqltools.json(json数组格式,database字段不可为空,密码特殊字符需url编码),三者缺一不可。

VSCode 本身不运行 SQL 脚本,所谓“运行”是插件调用数据库驱动执行语句;装错插件、没激活连接、文件编码不对,三者任一出问题,脚本就会静默失败或报 No active connection found。
SQLTools 连接配置必须手动写 sqltools.json,GUI 表单容易漏填关键字段
SQLTools 的连接信息默认存在项目根目录下的 .vscode/sqltools.json,不是用户设置里,也不是点几下就存好了。GUI 表单常漏掉 database 字段(尤其 PostgreSQL),导致连上也查不了表。
- 手动创建
.vscode/sqltools.json,内容必须是 JSON 数组格式,哪怕只配一个连接 -
driver值大小写敏感:写PostgreSQL,不能写postgres;SQLite 不需要host/port,只填"driver": "SQLite"和相对路径的database - 密码含
@、/等字符,必须 URL 编码,比如my@pwd→my%40pwd;否则连接字符串被截断,报Login failed却不提示原因
执行前必须显式激活连接,状态栏绿色图标才是唯一可信信号
侧边栏显示连接名 ≠ 已连接;右键点了 Connect ≠ 成功;甚至刚弹出 “Connected” 提示也可能只是握手成功、后续查询仍失败。真正有效的连接状态,只看 VSCode 窗口右下角——出现绿色数据库图标并带连接名才算数。
- 每次重启 VS Code、切换工作区、Git 切分支后,都得重新右键连接名 →
Connect - 一个
.sql文件可同时关联多个连接:选中某段语句 → 右键 →Run Current Statement in Connection,不依赖全局选中的连接 - MySQL/PostgreSQL 驱动多数强制要求语句以分号
;结尾,漏写就判定为Query is empty
mssql 扩展对 GO 和编码极其敏感,和 SQLTools 完全不兼容
SQL Server 场景下,mssql 扩展不认分号分隔,只认独占一行的 GO;混用 ; 和 GO 会导致解析中断,脚本卡在“正在执行”不动。
-
GO必须独占一行,前后不能有空格、缩进、注释,否则整个脚本静默失败 - 首次运行会自动下载
sqltoolsserviceCLI;公司代理环境下大概率失败,需手动下载并配置sqltools.servicePath到用户设置 - 中文乱码不是文件编码问题,而是连接层没设
"connectionString": "charset=utf8mb4"(MySQL)或"connectionString": "client_encoding=utf8"(PostgreSQL)
执行范围由光标位置决定,不是“按快捷键就跑全文”
Ctrl+Alt+R(Win/Linux)或 Cmd+Alt+R(macOS)只执行“当前语句块”,不是整文件,也不是任意位置都生效。它严格按光标所在逻辑边界判断执行范围。
- 光标必须落在以分号
;结尾的完整语句内部(如SELECT * FROM users;的任意位置) - 不能停在
--或/* */注释内、空行、字符串字面量中间,否则报Query is empty - 想执行多条?先全选(
Ctrl+A),再按快捷键;否则只跑光标所在逻辑块(以分号或空行为界)
最常被忽略的是:VSCode 读取的是 UTF-8(无 BOM)文件,但数据库驱动可能仍用 utf8(即 utf8mb3)解码;中间一环断掉,整条链就乱——这不是语法错误,是连接层与文件编码没对齐。











