vscode本身不运行sql脚本,需依赖sqltools等插件;必须设语言模式为sql、手动激活连接、全选内容后执行,三者缺一不可,否则静默失败或报“no active connection found”。

VSCode 本身不运行 SQL 脚本,所谓“运行”其实是插件调用数据库驱动执行语句;装错插件、没激活连接、文件编码不对,三者任一出问题,脚本就会静默失败或报 No active connection found。
SQLTools 怎么运行整个 .sql 文件
SQLTools 不会自动识别并执行你双击打开的 .sql 文件——它只响应明确的“执行指令”,且严格依赖当前连接上下文和语言模式。
- 必须先将文件语言模式设为
SQL:点击右下角Plain Text→ 搜索选SQL(快捷键Ctrl+K M) - 必须已建立连接,并手动点击侧边栏连接名右键 →
Connect,状态栏右下角显示数据库图标才算激活 - 全选内容(
Ctrl+A),再按Ctrl+Alt+R(Win/Linux)或Cmd+Alt+R(macOS);仅靠快捷键不选中,默认只执行光标所在语句块 - 语句必须以分号
;结尾;含CREATE DATABASE或跨库操作的脚本,MySQL/PostgreSQL 驱动通常拒绝执行,建议拆开手动跑
mssql 扩展执行 .sql 文件为什么卡住不动
mssql 扩展对执行环境更敏感,尤其在 WSL2、远程开发或公司代理环境下,卡在“正在执行”往往不是脚本问题,而是底层服务没起来。
- 必须先通过命令面板运行
MS SQL: Connect,不能只点侧边栏连接图标——后者常不触发 language server 启动 -
.sql文件里GO必须独占一行,前后不能有空格或注释;混用;和GO会导致解析中断 - 首次运行会自动下载
sqltoolsserviceCLI;若网络受限(如公司代理),需手动下载并配置sqltools.servicePath到用户设置 - 结果默认截断(
mssql.maxRows默认 1000),大结果集需提前在设置里调高
脚本执行后中文变问号或一半就停
这不是语法错误,是连接层字符集与文件编码没对齐。VSCode 读取的是 UTF-8(无 BOM)文件,但数据库驱动可能仍用 utf8(即 utf8mb3)解码,中间一环断掉,整条链就乱。
- MySQL 连接配置中加
"connectionString": "charset=utf8mb4" - PostgreSQL 加
"connectionString": "client_encoding=utf8" - 确认脚本文件本身是 UTF-8 无 BOM:VSCode 右下角点击编码 → 选
Reopen with Encoding→UTF-8 - 别信“自动检测”:某些插件会把带中文的 SQL 当作 GBK 解码,必须显式指定
SQLite 脚本执行后 VSCode 插件不刷新数据
VSCode 的 SQLite 插件(如 alexcvzz 版)不是监听文件变更,而是按需重新读取整个 .db 文件。你在 Python 脚本里执行了 conn.commit(),插件不会自动感知。
- 想看到更新,得手动右键数据库连接 →
Refresh,或关闭再重开表格标签页 - 首次加载大库(>100MB)时卡顿几秒是正常行为,插件正在解析表结构,不是卡死
- 确保工作区是包含
.db文件的父目录,且文件名带正确后缀(如app.db、cache.sqlite);data(无后缀)或db.txt不会被识别
真正容易被忽略的是:连接图标出现在状态栏 ≠ 查询能跑通;SELECT * FROM users 报错,大概率不是表不存在,而是 database 字段为空、字符集没设、或脚本文件编码和驱动解码不一致——这些细节不出错时不显眼,一出就是“查不到数据”这种模糊现象。











