Database Workbench
Database Workbench 是一个在 VS Code 内使用的数据库工作台。它把连接管理、结构浏览、数据预览、查询编辑、数据修改、导入导出、操作日志和 AI 辅助放到同一个侧边栏与标签页工作流里。
当前支持:MySQL、PostgreSQL、Redis、Elasticsearch、MongoDB、TDengine、Kafka、MQTT、ETCD。
免费说明:所有插件功能默认免费可用,AI 辅助、操作日志、表结构对比等入口都直接开放;使用 AI 前仍需要自行配置 OpenAI、DeepSeek、通义千问、豆包、Ollama 等 OpenAI 兼容接口和自己的模型额度。
项目地址:https://github.com/loveyu233/databases
支持能力矩阵
| 能力 |
MySQL |
PostgreSQL |
Redis |
Elasticsearch |
MongoDB |
TDengine |
Kafka |
MQTT |
ETCD |
| 连接管理 |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| 分组 / 置顶 / 导入导出连接 |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
| 资源浏览 |
库 / 表 |
库 / schema / 表 |
DB / Key |
索引 |
数据库 / 集合 |
库 / 超级表 / 表 |
Topic |
订阅 Topic |
Key 空间 / Key |
| 快速查询 |
WHERE 片段 |
WHERE 片段 |
Key 搜索 / INSPECT |
Query DSL / query_string |
JSON Filter |
WHERE 时间条件 |
CONSUME Topic |
SUBSCRIBE Topic |
GET Key / PREFIX 前缀 |
| 查询控制台 |
SQL |
SQL |
Redis 命令 |
HTTP Query DSL / ES SQL |
Mongo shell 风格命令 |
TDengine SQL |
Kafka 命令 |
MQTT 命令 |
ETCD 命令 |
| 数据预览 |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
✅,消费消息 |
✅,订阅消息 |
✅,Key/value |
| 双击编辑 |
✅ |
✅ |
✅ |
✅ |
✅,按 _id |
- |
- |
- |
- |
| 新增 / 删除 |
✅ |
✅ |
部分 Key/成员 |
✅ |
✅,按 _id |
- |
创建 / 删除 Topic,发送消息 |
添加 / 移除订阅,发布消息 |
创建 / 删除 Key |
| 创建资源 |
数据库 / 表 |
数据库 / schema 表 |
- |
索引 |
数据库 / 集合 |
数据库 |
Topic |
订阅 Topic |
Key |
| 修改表结构 |
✅ |
✅ |
- |
- |
- |
- |
- |
- |
- |
| 表结构对比 |
✅ |
✅ |
- |
- |
- |
- |
- |
- |
- |
| 操作日志 |
✅ |
✅ |
✅ |
✅ |
✅ |
✅,SQL 变更 |
- |
- |
- |
| AI 辅助 |
SQL |
SQL |
命令 |
Query DSL / ES SQL |
MongoDB 命令 |
TDengine SQL |
Kafka 命令 |
MQTT 命令 |
ETCD 命令 |
目录
核心特性
- 统一连接树:按分组、连接、数据库 / Schema / DB / 索引 / 集合展示资源。
- 彩色语义图标:连接、分组、筛选、数据库空间、schema、表 / Key / Topic / 集合都使用独立彩色图标,资源类型更容易区分。
- 一致的工作台体验:点击左侧资源后,右侧标签页展示预览、快速条件、SQL / 命令编辑器、AI 时间线和结果表格。
- 多数据源支持:MySQL、PostgreSQL、Redis、Elasticsearch、MongoDB、TDengine、Kafka、MQTT、ETCD 使用同一套操作习惯。
- 可视化数据编辑:双击编辑、JSON 格式化与高亮、枚举/布尔快捷按钮、快速新增、右键删除和批量删除。
- 结构管理:MySQL / PostgreSQL 支持创建表、修改表、SQL 建表导入、复制结构、触发器、自定义类型等。
- 安全确认:变更类 SQL / 命令执行前会弹出格式化确认预览;MySQL / PostgreSQL 多条 SQL 执行会使用事务包裹。
- AI 辅助:基于当前表结构、Redis Key、ES Mapping、MongoDB 集合结构、TDengine 时序表结构、Kafka Topic、MQTT Topic 或 ETCD Key 信息生成查询和分析错误。
- 操作日志:记录数据变更和结构变更,支持查看前后数据、标签和回滚。
免费说明
- 插件内所有入口默认开放,包括 AI 辅助、操作日志、表结构对比、连接分组、导入导出和多数据源查询。
- AI 功能本身可直接使用,但模型服务、API Key、调用额度需要你自行准备并在「配置 AI」中填写。
- 操作日志保存在本机目录,默认不会上传;如果记录了真实业务数据,请根据团队安全规范选择日志目录。
- 导出的连接 JSON 可能包含密码,建议只在可信环境中保存和导入,不要提交到代码仓库。
快速开始
- 安装插件后,打开 VS Code 左侧 Database Workbench。
- 点击连接树标题栏的
+。
- 选择「添加数据库连接」。
- 选择类型:MySQL / PostgreSQL / Redis / Elasticsearch / MongoDB / TDengine / Kafka / MQTT / ETCD。
- 填写 host、port、username、password、默认数据库或认证库等信息;MQTT 的初始订阅 Topic、ETCD 的 Key 前缀筛选都可以留空。
- 点击「测试连接」。
- 展开连接,点击数据库、表、索引、集合、Redis DB、Kafka Topic、ETCD Key;MQTT 可在
subscriptions 订阅空间右键添加订阅 Topic 后点击打开。
- 在右侧标签页中查询、编辑、导出或使用 AI。
命令面板也可以直接执行:
Database Workbench: 添加数据库连接
Database Workbench: 配置 AI
界面与操作习惯
左侧连接树
Database Workbench
├─ 本地环境
│ ├─ MySQL 本地连接
│ │ └─ app_blog
│ │ └─ users
│ ├─ PostgreSQL 本地连接
│ │ └─ pg_type_test
│ │ └─ public
│ │ └─ mqtt_user
│ ├─ Redis 本地连接
│ │ └─ db0
│ ├─ Elasticsearch 本地连接
│ │ └─ indices
│ │ └─ logs.2026.05
│ ├─ MongoDB 本地连接
│ │ └─ app_blog
│ │ └─ users
│ ├─ TDengine 本地连接
│ │ └─ power
│ │ ├─ meters
│ │ └─ d1001
│ ├─ Kafka 本地连接
│ │ └─ topics
│ │ ├─ orders.created
│ │ └─ user.events
│ ├─ MQTT 本地连接
│ │ └─ subscriptions
│ │ ├─ sensors/+/temperature
│ │ └─ test/#
│ └─ ETCD 本地连接
│ └─ keys
│ ├─ /config/app
│ └─ /services/api
- 分组可修改名称和颜色。
- 连接可拖拽到分组,也可以移出分组。
- 分组、连接、数据库、表 / 集合 / 索引都支持同层级置顶。
- 右侧当前操作的表会同步高亮左侧对应节点。
右侧工作台
顶部:刷新 / 自动刷新 / 复制结构 / 修改结构 / 选择显示字段 / 操作日志
快速条件:WHERE 片段、TDengine 时间条件、ES 条件、MongoDB JSON Filter、Redis Key 搜索、ETCD Key 前缀
SQL / 命令 / AI:完整 SQL、TDengine SQL、Redis 命令、ES 请求、MongoDB 命令、Kafka 命令、MQTT 命令、ETCD 命令、AI 时间线
结果表格:预览、排序、分页、横向滚动、编辑、右键菜单
各数据库使用示例
MySQL:查询、编辑和导入导出
快速条件只输入 WHERE 后面的内容:
status = 'paid' AND id > 100
完整 SQL 可以放到 SQL 编辑器:
SELECT id, title, created_at
FROM blogs
WHERE deleted_at IS NULL
ORDER BY created_at DESC
LIMIT 30;
常用操作:
- 双击单元格编辑字段值。
- JSON 字段支持格式化、高亮和校验。
- 枚举字段会展示快捷选择按钮。
- 布尔字段会展示
true / false 快捷按钮。
- 快速新增行支持默认值、自增字段显示为
auto。
- 导出支持 Excel / SQL、字段选择、别名、拖拽排序。
- 从其他 MySQL 表导入时支持字段映射、批量写入和事务。
PostgreSQL:schema、enum、role 和触发器
PostgreSQL 支持 schema 分层展示:
pg_type_test
├─ public
│ └─ mqtt_user
└─ type_lab
└─ primitive_types
创建表时可以指定 schema。DDL 执行 Role 可填写角色名,执行时会自动包裹:
SET ROLE xtj_smart_pen_owner;
CREATE TABLE xxx (
id bigserial PRIMARY KEY,
name text NOT NULL
);
RESET ROLE;
PostgreSQL 专属增强:
- 支持读取和展示
CREATE TYPE ... AS ENUM 自定义枚举。
- 创建 / 修改字段时可以像 MySQL 一样写
enum('active','disabled'),插件会自动生成对应 CREATE TYPE。
- 修改 enum 删除旧值或调整顺序时,会生成替换类型迁移方案。
更新时 CURRENT_TIMESTAMP 会通过触发器函数实现。
- 触发器、自定义方法、自定义类型会格式化展示并高亮。
- SQL 建表入口可粘贴
CREATE TYPE、CREATE TABLE、COMMENT、INDEX、TRIGGER 等 SQL 并转成可视化草案。
Redis:DB、Key 和安全预览
Redis 面板围绕 Key 管理:
- 展示
db0、db1 等 DB。
- 支持 Key 分页浏览、搜索、TTL、Memory 查看。
- 支持 string、hash、list、set、zset、stream 预览。
- 支持详情分页、成员删除和 zset score 排序。
- TTL 可以双击修改,支持
10、1s、1m、1h、1d、persist。
示例命令:
SCAN 0 MATCH user:* COUNT 100
HSCAN user:1 0 COUNT 100
ZRANGE rank 0 20 WITHSCORES
为避免阻塞 Redis,插件会提示 KEYS、无界范围读取、大 Key 删除等高风险命令,并建议更安全的 SCAN / 分页方案。
ETCD:Key 浏览、前缀查询和配置写入
ETCD 默认连接 host:2379。本地无认证时用户名和密码都可以留空;开启 SSL 后会使用 https 连接。连接配置中的“Key 前缀筛选”可以留空,也可以填写 /config/、/services/ 这类前缀,左侧树会只展示匹配前缀的 Key。
左侧树会在 keys Key 空间下展示 Key。点击 Key 后,右侧默认执行 GET 并展示 key、value、version、createRevision、modRevision、lease、size 等信息。
查询控制台支持的常用 ETCD 命令:
SHOW KEYS
SHOW KEYS PREFIX /config/ LIMIT 30
PREFIX /services/ LIMIT 30
SCAN /feature/ LIMIT 20
GET /config/app
PUT /config/app VALUE {"enabled":true}
DELETE /config/app
DELETE_PREFIX /config/
ETCD 操作说明:
- 快速条件留空时读取当前 Key;填写前缀时会执行
PREFIX "<前缀>" LIMIT N。
- 连接或
keys Key 空间右键“创建”可新增 Key,并填写初始 Value。
- 右键 Key 可删除该 Key;
DELETE_PREFIX 只建议在明确确认前缀范围后手写执行。
- 复制结构会生成可复用的
PUT key VALUE value 命令。
- 表格不开放双击编辑,修改配置建议通过创建 Key 弹窗或查询控制台显式执行
PUT。
Elasticsearch:索引、Mapping 和 Query DSL
Elasticsearch 支持 HTTP 请求格式:
GET /logs.2026.05/_search
{
"query": {
"match_all": {}
},
"size": 30
}
也支持 Elasticsearch SQL。
增强点:
- 左侧索引名会完整展示,例如
logs.2026.05 不会被错误显示成 05。
- 空索引预览时会读取 mapping 字段作为表头,不再只显示
result。
- 支持 Mapping / Settings 复制。
- 支持文档预览、双击编辑、右键删除。
- 支持本地自签名证书,可按需开启不安全 TLS。
MongoDB:数据库、集合和 Shell 风格命令
MongoDB 支持无认证本地连接,也支持用户名密码认证。默认端口为 27017。如果填写用户名但不填写认证库,默认使用 admin 作为认证库。
集合预览默认执行:
db.getCollection("users").find({}).limit(30)
快速条件输入 JSON Filter:
{ "status": "active", "age": { "$gte": 18 } }
命令控制台支持常用 Mongo Shell 风格命令:
show dbs
show collections
db.runCommand({ ping: 1 })
db.createCollection("users")
db.getCollection("users").find({ _id: ObjectId("64f000000000000000000001") }).limit(30)
db.getCollection("users").countDocuments({ status: "active" })
db.getCollection("users").aggregate([{ "$match": { "status": "active" } }])
db.getCollection("users").insertOne({ name: "Alice", status: "active" })
db.getCollection("users").updateOne({ _id: ObjectId("64f000000000000000000001") }, { "$set": { status: "disabled" } })
db.getCollection("users").deleteMany({ status: "disabled" })
db.getCollection("users").createIndex({ status: 1 }, { name: "idx_status" })
MongoDB 表格编辑说明:
- 集合结构由采样文档推断。
_id 被识别为主键。
- 双击编辑支持 JSON / object / array 字段。
- 新增、修改、删除会生成对应
insertOne、updateOne、deleteMany。
- 关联查询和字段快速条件查询支持 ObjectId 自动识别。
TDengine:时序库、超级表和时间窗口查询
TDengine 连接通过 taosAdapter WebSocket 端口访问,默认端口为 6041。本地默认账号通常是 root,默认密码通常是 taosdata;开启 SSL 时会使用 wss:// 连接。
左侧树会展示数据库,下一级合并展示超级表、子表和普通表。点击时序表后,右侧会预览数据并读取字段结构;空结果也会保留 ts、指标字段和 tag 字段表头。
常用查询:
SHOW DATABASES;
SHOW STABLES;
SHOW TABLES;
DESCRIBE meters;
SELECT *
FROM meters
WHERE ts >= now - 1d
LIMIT 30;
SELECT avg(current) AS avg_current
FROM meters
WHERE ts >= now - 1h
INTERVAL(10m);
TDengine 操作说明:
- 快速条件可直接输入
ts >= now - 1d AND current > 10。
- 查询控制台支持
SHOW、DESCRIBE、SELECT、CREATE DATABASE、CREATE STABLE、INSERT 等 TDengine SQL。
- 复制结构会优先读取
SHOW CREATE STABLE / SHOW CREATE TABLE。
- 行右键支持关联查询和字段快速条件查询,方便用 tag 或时间字段反查其它时序表。
- 表格双击编辑、快速新增和右键删除行暂不开放,建议通过 SQL 控制台显式执行 TDengine 写入或清理语句。
Kafka:Topic 浏览、消息消费和测试发送
Kafka 默认连接 host:9092。用户名可留空;如果填写用户名和密码,插件会按 SASL/PLAIN 认证。开启 SSL 后会使用 TLS,也可以在可信内网环境下允许自签名证书。
连接配置中的“Topic 筛选”可以留空,也可以填写通配符或逗号分隔的多个规则:
orders-*
user-*,event-*
左侧树会在 topics 下展示 Topic。点击 Topic 后,右侧会按限制条数消费消息,并以消息流卡片展示 topic、partition、offset、timestamp、key、value、headers、size 等信息,避免把消息队列硬塞进传统 SQL 表格。
查询控制台支持的常用 Kafka 命令:
SHOW TOPICS
SHOW TOPICS ALL
LIST GROUPS
DESCRIBE TOPIC orders.created
DESCRIBE GROUP order-consumer
CONSUME orders.created LIMIT 20
CONSUME orders.created FROM LATEST LIMIT 20 TIMEOUT 5000
PRODUCE orders.created KEY user-1 VALUE {"id":1,"status":"created"}
CREATE TOPIC orders.created PARTITIONS 3 REPLICATION_FACTOR 1
CREATE TOPIC orders.created PARTITIONS 6 REPLICATION_FACTOR 3 CONFIG cleanup.policy=compact,delete CONFIG retention.ms=-1 CONFIG compression.type=zstd
DELETE TOPIC orders.created
Kafka 操作说明:
- 预览和快速查询默认使用
CONSUME <topic> LIMIT N,适合快速查看消息内容。
FROM LATEST 可用于等待新消息;默认从头开始消费,并使用临时 consumer group,不会影响已有业务消费组 offset。
- 连接或
topics Topic 空间右键“创建”可创建 Topic;表单支持分区数、副本数、清理策略、保留时间 / 大小、最小同步副本、消息大小、日志段大小、压缩类型和自定义 key=value 配置。
- 创建 Topic 时会生成可预览的
CREATE TOPIC ... CONFIG key=value 命令,适合把 Kafka UI 常用 Topic 参数一次填齐。
- 右键 Topic 可删除 Topic。
- 打开 Topic 标签页后,顶部“刷新数据”前的“发送消息”按钮可打开弹窗;可填写 Topic、可选 Key 和消息内容,弹窗会预览实际执行的
PRODUCE 命令。
- 表格不开放双击编辑,复杂消息写入也可以在查询控制台手写
PRODUCE 命令。
MQTT:连接、订阅 Topic 和发布消息
MQTT 默认连接 host:1883。用户名和密码都可以留空;开启 SSL/TLS 后会使用 mqtts,也可以在可信内网环境下允许自签名证书。
推荐流程是先保存 MQTT 连接,再展开左侧连接树,在 subscriptions 订阅空间上右键选择“创建”来新增订阅 Topic。连接配置里的“初始订阅 Topic”可以留空,也可以预填逗号分隔的多个 Topic 过滤器,支持 MQTT 标准通配符 + 和 #:
sensors/+/temperature, test/#
左侧树会在 subscriptions 下展示已添加的订阅 Topic。点击某个订阅 Topic 后,右侧会打开新的标签页临时订阅,并以消息流卡片展示 topic、qos、retain、dup、timestamp、payload、json、size、messageId 等信息。
查询控制台支持的常用 MQTT 命令:
SHOW SUBSCRIPTIONS
PING
SUBSCRIBE sensors/+/temperature QOS 0 LIMIT 20 TIMEOUT 10000
PUBLISH sensors/device-1 QOS 0 PAYLOAD {"temperature":26}
PUBLISH test/notice RETAIN PAYLOAD hello
UNSUBSCRIBE test/#
MQTT 操作说明:
- 打开订阅 Topic 标签页后会保持持续订阅,外部客户端发布到匹配 Topic 的新消息会实时进入消息流,不需要手动刷新;同一个订阅 Topic 的结果区会按时间倒序累积展示最近收到/发送的消息,避免每次刷新或发送后只剩最新一条。
- 在
subscriptions 订阅空间右键“创建”可添加订阅 Topic;右键订阅 Topic 可从连接配置中移除。
- 打开订阅 Topic 标签页后,顶部“刷新数据”前的“发送消息”按钮可打开弹窗;可以指定发布 Topic、QoS 和消息内容,消息内容支持 JSON 高亮与格式化,弹窗会预览实际执行的
PUBLISH 命令。
- 发布 Topic 不允许包含
+ 或 # 通配符;如果当前订阅 Topic 是通配符,需要在弹窗里手动填写实际发布 Topic。
- 表格不开放双击编辑,复杂消息写入也可以在查询控制台手写
PUBLISH 命令。
AI 辅助
配置 AI 后,可以在 MySQL、PostgreSQL、Redis、Elasticsearch、MongoDB、TDengine、Kafka、MQTT、ETCD 中直接使用 AI。
AI 能力包括:
- 根据当前表结构生成 SQL。
- 根据 Redis Key 信息生成 Redis 命令。
- 根据 Elasticsearch Mapping 生成 Query DSL 或 ES SQL。
- 根据 MongoDB 集合结构生成 find / aggregate / countDocuments 等命令。
- 根据 TDengine 时序表结构生成时间范围、INTERVAL 和聚合 SQL。
- 根据 Kafka Topic 信息生成消费、描述 Topic 或发送测试消息命令。
- 根据 MQTT Topic 信息生成订阅或发布测试消息命令。
- 根据 ETCD Key 信息生成前缀查询、GET 或 PUT 配置命令。
- 根据错误信息分析失败原因。
- 根据自然语言辅助创建表结构草案。
- 对上一次 AI 结果继续追问和改写。
编辑器内支持特殊标签:
@ai{查询最近 7 天创建的订单}
<ai>统计每个状态的订单数量</ai>
@table{orders}
<table>users</table>
@gen{生成 10 条订单测试数据}
<gen>生成 10 条订单测试数据</gen>
配置入口:
Database Workbench: 配置 AI
Database Workbench: 测试 AI 配置
支持 OpenAI 兼容 Chat Completions 接口,内置 OpenAI、Anthropic、Gemini、DeepSeek、通义千问、豆包、智谱、Kimi、xAI、Perplexity、Cohere、OpenRouter、硅基流动、Groq、Together、Ollama、LM Studio 等预设。
示例配置:
{
"databaseWorkbench.ai.provider": "openai",
"databaseWorkbench.ai.useStream": true,
"databaseWorkbench.ai.baseUrl": "https://api.openai.com/v1",
"databaseWorkbench.ai.apiKey": "sk-xxx",
"databaseWorkbench.ai.modelName": "gpt-4o-mini",
"databaseWorkbench.ai.timeoutMs": 30000,
"databaseWorkbench.ai.maxSchemaChars": 16000
}
操作日志
使用操作日志前,请确保本机安装 SQLite。日志以 SQLite 文件保存在本机。
记录内容:
- 执行的 SQL / 命令。
- INSERT、UPDATE、DELETE 的修改前数据、修改后数据和当前数据。
- 表结构变更。
- 执行失败的错误信息。
- AI 错误分析结果。
- 回滚记录及其来源日志。
日志弹窗支持:
- 按颜色标签筛选。
- 右键给日志打标签。
- 查看修改前 / 修改后 / 当前数据对比。
- 对支持回滚的记录生成回滚 SQL 或命令并执行。
表结构对比
MySQL / PostgreSQL 数据库节点右键可以打开「对比表结构」。
特点:
- 支持选择源连接 / 数据库和目标连接 / 数据库。
- 支持全库对比,也支持单表对比。
- 展示字段、索引、约束、触发器等差异。
- 支持同步到目标或同步到源。
- 同步后自动重新对比当前表。
该功能可能生成 ALTER TABLE、DROP TABLE、DROP COLUMN 等高风险语句。生产环境使用前务必备份,并先在测试库验证。
连接分组、置顶、导入导出
连接管理增强:
- 侧边栏
+ 支持添加分组或添加连接。
- 分组右键可直接添加数据库连接,新连接会自动放入该分组。
- 普通添加连接时可以选择已有分组,也可以创建自定义分组。
- 连接可拖拽到分组或移出分组。
- 分组、连接、数据库、表 / 集合 / 索引都可右键置顶;置顶只在同类别同层级内生效。
- 侧边栏顶部导出按钮可导出分组和连接为 JSON。
- 快捷导入连接信息支持导入 Database Workbench JSON,并恢复分组。
导出的连接 JSON 可能包含密码,请妥善保存,不要提交到代码仓库。
交流与反馈
所有功能默认免费可用。如果需要交流使用经验或反馈 Bug,可以加入 QQ 交流群。
如果二维码加载失败,可以在 QQ 中搜索群号:1103462459。
设置项
查询
{
"databaseWorkbench.query.defaultLimit": 30,
"databaseWorkbench.query.maxRows": 500
}
defaultLimit:点击表 / 集合 / 索引预览和快速查询时默认读取行数。设置为负数表示查询全部。
maxRows:任意查询最多展示的行数,用于避免误查过大结果集。
导出
{
"databaseWorkbench.export.transactionThreshold": 100,
"databaseWorkbench.export.pageSize": 100,
"databaseWorkbench.export.maxRows": 10000
}
表格展示
{
"databaseWorkbench.table.showColumnComments": true,
"databaseWorkbench.table.hiddenColumnCommentNames": ["id", "created_at", "updated_at", "deleted_at"],
"databaseWorkbench.table.dataGridFontSize": 12,
"databaseWorkbench.table.sqlConfirmFontSize": 15
}
dataGridFontSize:结果表格字号。
sqlConfirmFontSize:SQL 确认弹窗字号。
AI
{
"databaseWorkbench.ai.provider": "openai",
"databaseWorkbench.ai.useStream": true,
"databaseWorkbench.ai.baseUrl": "",
"databaseWorkbench.ai.apiKey": "",
"databaseWorkbench.ai.modelName": "",
"databaseWorkbench.ai.debugMode": false,
"databaseWorkbench.ai.timeoutMs": 30000,
"databaseWorkbench.ai.errorTranslationTimeoutMs": 5000,
"databaseWorkbench.ai.maxSchemaChars": 16000
}
日志
{
"databaseWorkbench.log.enabled": true,
"databaseWorkbench.log.directory": "",
"databaseWorkbench.log.maxEntriesPerTable": 1000
}
Elasticsearch
{
"databaseWorkbench.elasticsearch.requestTimeoutMs": 30000,
"databaseWorkbench.elasticsearch.maxResponseBytes": 10485760,
"databaseWorkbench.elasticsearch.allowInsecureTls": false
}
requestTimeoutMs:HTTP 请求超时时间。
maxResponseBytes:单次响应体最大字节数。
allowInsecureTls:是否允许 HTTPS 跳过证书校验,仅建议在本地 Docker 或可信测试环境开启。
数据与隐私
- 连接密码保存在 VS Code
SecretStorage。
- 普通连接信息保存在 VS Code 扩展全局状态中。
- 导出的连接 JSON 可能包含密码。
- AI 请求会发送表结构、Key / 索引 / 集合 / 时序表 / Topic 摘要和你的需求描述,默认不发送查询结果数据行。
- 操作日志保存在本机,可能包含修改前后的真实业务数据。
- Elasticsearch 自签名证书需要手动开启
allowInsecureTls,远程或不可信网络环境不建议开启。
项目结构
当前代码已按较大的软件项目结构拆分,后续新增功能请尽量遵守边界:
src/
├─ database/
│ ├─ service.ts # 数据库应用服务入口
│ ├─ core/ # DbClient、事务判断、通用工具
│ └─ clients/ # mysql / postgres / redis / elasticsearch / mongodb / tdengine / kafka / mqtt / etcd
├─ workbench/
│ ├─ logic.ts # 查询、结构 SQL、导出、回滚等纯逻辑
│ └─ webviewHtml.ts # 右侧工作台 HTML / CSS / 前端脚本
├─ workbenchPanel.ts # Panel 生命周期和消息编排
├─ tree.ts # 左侧连接树
├─ extension.ts # VS Code 命令注册
├─ ai.ts # AI 请求与提示词
├─ logService.ts # 操作日志
└─ schemaSync.ts # 表结构同步逻辑
更多说明见:docs/architecture.md。
常见问题
功能是否全部免费?
是。AI、操作日志、表结构对比等功能都已默认开放,插件内不需要额外授权步骤。
AI 为什么还不能用?
AI 功能入口已免费开放,但插件不提供模型额度或通用 API Key。你需要自行准备大模型供应商的 API Key,并在「配置 AI」里填写 Base URL、API Key 和模型名。
AI 生成的 SQL / 命令可以直接执行吗?
不建议无脑执行。AI 生成结果可能不符合业务预期,尤其是 UPDATE、DELETE、ALTER、DROP、dropDatabase 等变更操作。执行前请认真阅读确认弹窗。
为什么 Redis 有些命令会被提示风险?
大数据量 Redis 上,KEYS、无边界范围读取、大 Key 删除等操作可能阻塞服务。插件会尽量提示更安全的 SCAN、分页读取或渐进式删除方案。
Elasticsearch 本地自签名证书连接失败怎么办?
如果确认是本地 Docker 或可信测试环境,可以开启:
{
"databaseWorkbench.elasticsearch.allowInsecureTls": true
}
远程生产环境不建议关闭证书校验。
MongoDB 为什么新建数据库时需要初始集合?
MongoDB 数据库只有在创建集合或写入文档后才会真正存在。插件创建 MongoDB 数据库时会让你填写初始集合名,默认 default_collection。
TDengine 为什么使用 6041 端口?
插件使用 TDengine 官方 WebSocket 连接器访问 taosAdapter,默认端口是 6041。如果你的 taosAdapter 端口或反向代理地址不同,请在连接配置里改成实际端口;开启 SSL 后会使用 wss://。
空 VS Code 中关闭插件标签页,为什么整个窗口也关闭?
插件的 Topic、查询控制台、创建连接、创建资源、新建表等页面都是 VS Code Webview 编辑器标签页。如果当前 VS Code 是空窗口,并且系统或用户设置开启了 window.closeWhenEmpty,关闭最后一个插件标签页时 VS Code 会认为窗口已经为空,从而自动关闭整个窗口。
如果不希望出现这个行为,可以在 VS Code settings.json 中设置:
{
"window.closeWhenEmpty": false
}
这个设置属于 VS Code 本身,不是插件配置;修改后空窗口关闭最后一个插件标签页也会保留 VS Code 窗口。
操作日志会不会占用很多空间?
如果频繁修改大表,日志会增长。可以调整 databaseWorkbench.log.maxEntriesPerTable,也可以把日志目录改到更安全、更大的磁盘位置,并定期清理。