SQLTools更新后连接报错90%因驱动不兼容或服务层未重载;需手动检查driver子目录、运行SQLTools: Install Driver安装对应驱动,并确认pg_config路径、MySQL认证协议、STS服务层下载及database字段必填等配置。

插件更新后连接报错,90% 是驱动不兼容或服务层未重载,不是配置错了,也不是数据库挂了。
SQLTools 更新后提示 “No driver found” 或 “MissingModuleError”
SQLTools 本身不带数据库驱动,更新后旧驱动路径可能失效,插件会直接跳过加载,而不是报错驱动版本不对。
- 检查插件是否自动卸载了旧驱动:打开
~/.vscode/extensions/mtxr.sqltools-*/packages/(Linux/macOS)或%USERPROFILE%\.vscode\extensions\mtxr.sqltools-*\packages\(Windows),确认存在driver.pg、driver.mysql等子目录;若为空或只有driver.base,说明驱动没装上 - 别依赖“自动安装驱动”弹窗——它常静默失败。手动在命令面板(
Ctrl+Shift+P)运行SQLTools: Install Driver,再选对应数据库 - PostgreSQL 用户注意:
driver.pg依赖系统有pg_config,若用brew install postgresql安装,需确保pg_config在$PATH中;否则手动设置sqltools.postgresql.pgConfigPath为绝对路径,比如/opt/homebrew/bin/pg_config - MySQL 驱动更新后仍连不上?大概率是认证协议不匹配——SQLTools MySQL Driver 默认不支持
caching_sha2_password,必须改用户认证方式:ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'pwd';
mssql 扩展更新后 “Add Connection” 按钮无响应
这不是 UI 卡死,而是 Microsoft.SqlTools.ServiceLayer(简称 STS)没下载或校验失败,新版 mssql 扩展强制要求 STS v4+,旧缓存会被忽略。
- 先看输出面板(
Ctrl+Shift+U)→ 切换到SQLTools标签页,搜service-layer或download failed;如果有,说明网络卡在下载环节 - 手动下载 STS:去 GitHub
microsoft/sqltoolsserviceRelease 页面,下载对应平台的最新版(如sqltoolsservice-win-x64.zip),解压后整个文件夹放进:~/.vscode/extensions/ms-mssql.mssql-*/sqltoolsservice/ - 删掉旧 STS 缓存更彻底:进该目录,删除
sqltoolsservice/和bin/下所有内容,再重启 VSCode,让它重新触发下载逻辑 - 公司内网或代理环境?设置
http.proxy和http.proxyStrictSSL后,还需在用户设置里加:"sqltools.servicePath": "/path/to/your/sqltoolsservice",绕过自动下载
MySQL 插件(cweijan 版)更新后执行 SELECT 报 “No database selected”
这个错误和插件更新强相关——新版本默认不再 fallback 到 information_schema,且 database 字段从可选变成隐式必填,空值会被静默忽略。
- 连接配置中必须显式填
database字段,哪怕只是临时连着看结构;留空 = 连上但上下文无库,任何非全限定表名(如SELECT * FROM users)都会失败 - 如果连的是 MySQL 8.4+,新版本插件默认启用
caching_sha2_password支持,但前提是服务端已加载对应插件;若你没动过 MySQL 配置,大概率仍需执行INSTALL PLUGIN caching_sha2_password SONAME 'caching_sha2_password.so'; - 密码含
@、/、:等字符?更新后 URL 解析更严格,必须编码:比如pa@ss/word→pa%40ss%2Fword;填错一个字符,插件会静默用空密码尝试连接 - 执行脚本时仍报错?确认文件语言模式是
SQL(右下角点Plain Text→ 选SQL),且已右键连接名点击Connect;状态栏右下角出现数据库图标才算真正激活
最麻烦的从来不是报什么错,而是插件更新后悄悄改了默认行为:比如把 autocommit 从 true 改成 false,或者把 charset 从 utf8mb4 回退到 utf8 ——这些都不会写在更新日志里,只能靠执行 SELECT @@autocommit, @@character_set_client; 实时验证。


















