Sublime Text默认不支持SQL语法智能提示和字段级补全;需安装SQLTools插件并配置连接信息,使其通过LSP对接数据库获取表结构缓存,才能实现SELECT后字段自动补全等功能。

SQL语法高亮和补全在Sublime Text里默认不工作
Sublime Text原生不支持SQL语法的智能提示(比如表名、字段名自动补全),也不识别.sql文件的上下文(如当前连接的是MySQL还是PostgreSQL)。你打开一个SQL文件,可能只有基础高亮,SELECT变蓝了,但user_id这种字段名毫无提示,写错也看不出。
真正起作用的是第三方插件,核心靠SQLTools——它不是单纯加高亮,而是通过语言服务器协议(LSP)对接真实数据库,把表结构拉进来做本地缓存,才能实现字段级补全。安装后必须手动配置连接信息,否则Ctrl+Space按了也没反应。
- 别装
SQL Syntax Highlighter这类纯高亮插件,它们不提供补全 -
SQLTools依赖SQLTools Language Server二进制文件,首次启用会自动下载,但国内网络常失败,需手动下载放到~/Library/Application Support/Sublime Text/Packages/SQLTools/bin/(macOS)或对应路径 - 连接配置写在
SQLTools.sublime-settings里,必须指定"driver"("mysql"、"postgres"等),拼错就报Unsupported driver
在Sublime Text里直接运行SQL脚本要绕过GUI限制
Sublime Text没有内置终端或数据库连接面板,所谓“直接运行”,本质是把当前SQL文本发给外部命令行工具执行,再把结果回显到面板。这依赖Build System机制,而不是点个按钮就连上数据库。
常见错误是直接用mysql -u root -p 这种写法——它会卡在密码输入环节,因为Sublime的build系统不支持交互式stdin。必须改用免密方式,或把密码写进配置(不推荐)或用<code>my.cnf。
- Linux/macOS下推荐用
mysql --defaults-file=~/.my.cnf -D database_name ,其中<code>.my.cnf里包含[client]段和user/password字段 - Windows下用
mysql.exe -u%USER% -p%PASSWORD% -D %DB% -e "source $file_path",但密码明文有风险;更安全的是用mysql_config_editor生成加密登录路径 - Build结果面板默认只显示前100行,长结果会被截断;可在
Preferences → Package Settings → SQLTools → Settings里调大"max_output_lines"
SQLTools的表名补全失效时先查缓存状态
补全突然不工作,大概率不是插件坏了,而是元数据缓存没更新或连接断开了。SQLTools不会实时监听数据库DDL变更,比如你刚ALTER TABLE加了个字段,旧缓存里就没有,补全列表里自然找不到。
它的缓存存在本地SQLite文件中(路径类似~/Library/Caches/SQLTools/cache.db),每次连接成功后才拉取一次schema。如果表太多,首次缓存可能耗时几十秒,期间补全为空白。
- 按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Win/Linux),输入SQLTools: Refresh Schema强制重拉 - 检查状态栏右下角是否显示
SQLTools (connected),显示(disconnected)说明连接参数错或网络不通 - PostgreSQL用户注意:
search_path影响补全范围,若设为"$user", public,但当前用户schema不存在,补全会漏掉该schema下的表
多个数据库共存时容易连错环境
SQLTools允许配置多个连接(connections数组),但当前编辑的SQL文件不会自动绑定某个连接。你打开prod.sql,光标停在UPDATE users SET...上,按Ctrl+Space,补全的字段可能来自测试库的users表——因为上次激活的是test连接。
它靠文件路径匹配来切换连接(例如"path": ".*prod.*\.sql"),但正则写错就失效。更隐蔽的问题是:连接名重复、端口写成字符串("port": "5432"而非5432)会导致静默降级为默认连接。
- 每个连接块必须有唯一
"name",且build system里通过"target": "sqltools_build"+"args": {"connection": "prod"}显式指定 - 在SQL文件顶部加注释
-- @connection prod可临时覆盖全局设置,比改配置快 - 执行前务必看右下角连接名,别凭文件名判断——
dev.sql里写着-- @connection prod,就是真连生产库
最麻烦的不是配置步骤多,而是错误反馈太安静:连不上不报红,补全空白不提醒,执行失败只在小面板闪一下。得养成习惯,每次操作前先盯两秒状态栏的连接名和状态,再动手。

















