sublime text 本身不支持运行 sql 或连接数据库,需依赖第三方插件(如 sqltools)或外部命令调用;配置构建系统时须指定绝对路径、正确处理密码与特殊字符,并合并 stderr 输出以确保结果可见。

Sublime Text 本身不支持运行 SQL 或连接数据库
它是个纯文本编辑器,没有内置的数据库驱动、执行引擎或连接管理功能。你看到的“Sublime 运行 SQL”效果,全是靠第三方插件(比如 SQLTools)或外部命令调用(比如 mysql、psql 命令行)实现的。直接按 Ctrl+B 或 Cmd+B 不会执行语句——除非你手动配置了构建系统,且系统里写了正确的命令和参数。
用 SQLTools 插件连接数据库最省事,但得装对组件
它不是单个插件,而是一套组合:SQLTools 核心 + 对应数据库的 SQLTools Driver(如 SQLTools PostgreSQL Driver)。漏装驱动,连上也执行不了语句,会卡在“Connecting…”或报错 Driver not found。
- 先装 Package Control(如果还没装),再通过 Command Palette →
Package Control: Install Package装SQLTools - 再单独装对应驱动:比如用 MySQL 就搜
SQLTools MySQL Driver,PostgreSQL 就选SQLTools PostgreSQL Driver - 配置连接时,
host别写localhost却配了socket;MySQL 用 socket 连接时要填socket字段,不能只填host和port - 密码含特殊字符(如
@、/)时,URL 编码不处理会导致连接失败——建议改用配置文件方式填密码,而不是拼在 connection string 里
手动配构建系统跑 SQL,适合一次性脚本或 CI 场景
本质是让 Sublime 调用系统已安装的 CLI 工具(如 sqlite3、mysql),把当前文件内容喂给它。问题常出在路径、权限和输入流上。
-
cmd数组里第一项必须是绝对路径,比如/usr/local/bin/mysql,不能只写mysql(Windows 同理,得写C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe) - Linux/macOS 下,如果 MySQL 需要密码,别在构建系统里硬编码
-p123456——这会暴露密码,且空格敏感;改用--defaults-file指向一个只读的 my.cnf 文件 - SQLite 最简单:构建系统里写
["sqlite3", "$file", ".read $file"]即可,但注意$file必须是 .sql 文件,且首行不能有 BOM - Windows 上用
cmd /c包一层时,$file中的反斜杠会被转义,建议用$(file)变量或改用 PowerShell 构建系统
查询结果看不到?大概率是输出没被捕获或被吞了
构建系统默认只显示 stdout,但很多数据库 CLI 工具把结果头、分隔线、警告都打在 stderr 上,或者用了交互式 pager(比如 less)。你看到空白或一闪而过的窗口,不是没执行,是输出没进 Sublime 的 build panel。
- MySQL 加
--batch --raw --skip-column-names关掉格式化和 pager - PostgreSQL 加
-t -A -q(-t去表头,-A无对齐,-q静默模式) - 所有 CLI 工具加
2>&1把 stderr 合并到 stdout(构建系统 cmd 数组末尾加"2>&1") - 如果用了
mysql -e "SELECT ...",记得引号要匹配:Windows 用双引号,macOS/Linux 用单引号,否则变量扩展或空格会出错
真正麻烦的是事务控制和多语句——CLI 工具通常一次只执行一个 statement,带 BEGIN/COMMIT 的脚本容易中途断开。这种场景老实用 DBeaver 或 VS Code + SQLTools,别硬扛。










