SQLTools更新后表结构不显示或字段丢失,主因是v0.28+版本元数据解析逻辑变更导致权限不足或协议不兼容;需检查USAGE权限、用超级用户验证、授GRANT USAGE ON SCHEMA、或配置"useLegacyMetadata": true回退兼容模式。

SQLTools 更新后表结构不显示或字段丢失
插件升级后,原本能正常展开的数据库树形结构突然变为空,或者右键“刷新”无反应,甚至 DESCRIBE table_name 返回空结果——这不是数据库断连,而是新版 SQLTools 的元数据解析逻辑变更导致的缓存/协议不兼容。
核心原因是:v0.28+ 版本起,SQLTools 将 PostgreSQL/MySQL 等驱动的列元信息获取方式从旧版 pg_catalog 查询切换为标准 information_schema.columns + 驱动原生 API 混合模式,若目标数据库权限受限(如只给 SELECT 不含 USAGE on schema),就会静默跳过字段加载。
- 检查当前连接用户是否拥有
USAGE权限:执行SELECT current_database(), current_user;后,运行SELECT schema_name FROM information_schema.schemata WHERE schema_owner = current_user;,确认 schema 是否在返回列表中 - 临时用超级用户连接测试:若此时结构正常出现,说明是权限问题,需补授权:
GRANT USAGE ON SCHEMA public TO your_user; - 禁用新解析器回退兼容模式:在连接配置 JSON 中添加
"useLegacyMetadata": true字段(仅限 PostgreSQL/CockroachDB 驱动)
MySQL 连接后无法加载视图或存储过程
更新后,Views 或 Stored Procedures 节点始终折叠、点击无响应,控制台报错 ER_NO_DB_ERROR 或 Unknown system variable 'sql_mode'——这通常不是 MySQL 服务端问题,而是新版 SQLTools 默认启用 sql_mode=STRICT_TRANS_TABLES 后,对低版本 MySQL(
该错误不会阻断基础查询,但会中断元数据发现流程,使非表对象不可见。
- 在连接配置中显式关闭严格模式兼容:
"options": {"sql_mode": ""} - 若使用 MySQL 5.6 或更早版本,必须降级 SQLTools PostgreSQL/Cockroach Driver 插件至 v0.4.1 以下(新版驱动已移除对旧协议的支持)
- 避免在连接字符串中写死
?sql_mode=...,SQLTools 会覆盖它;所有选项应走options对象
连接管理器崩溃导致“Connection not found”错误
执行查询时弹出提示 Connection not found: mydb-conn,但连接列表里明明存在且状态为“Connected”——这是更新后 Connection Manager 的 ID 绑定机制变化所致:新版强制要求连接定义中的 id 字段必须为合法 JavaScript 标识符(不能含点号、斜杠、空格),而旧版允许 my.db.prod 这类格式。
一旦 ID 不合法,插件内部注册失败,但 UI 层仍显示该连接,形成“可见不可用”假象。
- 打开连接配置文件(
~/.vscode/settings.json或工作区.vscode/settings.json),搜索"connections"数组 - 检查每个连接对象的
id值:替换掉所有.、/、-(建议统一用下划线_) - 重启 VSCode(仅重载窗口不够,必须完全退出再启动),否则旧 ID 缓存仍在 Extension Host 内存中
格式化 SQL 后关键字全大写引发语法错误
更新后,按 Shift+Alt+F 格式化含 MySQL 全文索引语句(如 ALTER TABLE t ADD FULLTEXT(title))时,FULLTEXT 被转成 fulltext 或 Fulltext,执行报错 ERROR 1064——这是因为新版 formatter 默认启用 ANSI SQL 模式,将所有关键字小写,而 MySQL 对部分索引类型关键字大小写敏感。
这不是 bug,是设计选择:ANSI 兼容性优先于 MySQL 方言细节。
- 在连接配置中指定方言:
"dialect": "mysql"(支持值:"postgres","mysql","mssql") - 若全局生效,可在 VSCode 设置中加:
"sqltools.formatter.dialect": "mysql" - 临时绕过:选中 SQL 片段 → 右键 → “Format Selection”,避免全文档格式化触发关键字转换
id 字段。


















