DBeaver中JSON字段显示为[BLOB]或{...}是因未启用原生JSON支持,需更新驱动、在连接设置中启用native_json(MySQL)或use_json_binary(PostgreSQL)、重启连接,并调高LOB读取上限至10MB以解决渲染失败问题。

结果集里JSON字段显示为「[BLOB]」或「{…}」但点不开?
这是最常见的现象:MySQL 或 PostgreSQL 表里存了 JSON 类型字段,DBeaver 查询后只显示 [BLOB]、{...} 或一串十六进制,双击没反应,右键也没“查看 JSON”选项。根本原因不是数据坏了,而是 DBeaver 默认把 JSON 当作二进制(BLOB)或字符串处理,没启用结构化解析。
解决的关键是让 DBeaver 识别该列为原生 JSON 类型,而不是当作普通文本或字节流:
- 确保数据库驱动版本够新(MySQL 8.0+ 推荐用
mysql-connector-java-8.0.33及以上;PostgreSQL 推荐pgjdbc 42.6.0+) - 连接配置中必须启用「Native JSON support」:右键连接 → 编辑连接 → 切到「驱动设置」→ 找到
native_json(MySQL)或use_json_binary(PostgreSQL),设为true - 重启连接(断开再重连),否则设置不生效
双击后弹出空窗口或报错「Can't open value viewer」?
即使类型识别正确,DBeaver 仍可能因内容格式或长度限制无法渲染。典型错误信息:Can't open value viewer for type 'json' 或窗口空白。
这不是 bug,而是 DBeaver 对 JSON 值的默认行为限制:
- 字段值超过默认阈值(通常 1MB)会被截断,导致解析失败 → 在 窗口 → 首选项 → 数据编辑器 → 大对象(LOB) 中调高
Maximum LOB length to read(比如设为10485760即 10MB) - JSON 字符串含非法转义或 UTF-8 BOM 头 → 可先用 SQL 提取并检查:
SELECT HEX(json_col) FROM table LIMIT 1,看开头是否为EFBBBF(BOM),如有需清洗数据 - PostgreSQL 的
jsonb字段在旧版 DBeaver(bytea → 升级到 DBeaver CE 24.2+ 可彻底解决
想直接复制某行 JSON 字段为格式化字符串?
不需要导出整张表,也不用切到 SQL 编辑器手写 JSON_PRETTY() —— DBeaver 内置了快捷路径:
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
- 在结果集表格中,**右键目标单元格**(不是整列,必须是具体某行某列的 JSON 值)
- 选择 高级复制 → Copy as JSON(注意不是「Copy content」)
- 粘贴出来就是带缩进、换行、引号的可读 JSON,例如:
{"id": 123, "tags": ["dev", "sql"], "active": true} - 如果选项灰掉,说明该单元格未被识别为 JSON 类型 → 回头检查驱动设置和字段实际类型(
DESC table_name确认类型是json而非text或varchar)
为什么修改 JSON 字段值后保存失败?
直接双击单元格修改 JSON 字符串,点保存却提示「Data transfer failed」或「Invalid JSON text」,常见于 MySQL 5.7+ 和 PostgreSQL。
根本问题在于:DBeaver 提交的是原始字符串,而数据库要求严格语法校验,且部分驱动不自动包裹引号或转义:
- MySQL 要求 JSON 字段值必须是合法 JSON 文本,不能是未加引号的 key(如写
{name: "a"}会失败,必须写{"name": "a"}) - PostgreSQL 对
jsonb字段接受更宽松输入,但 DBeaver 有时会漏掉末尾逗号或多余空格 → 建议先在 SQL 编辑器中验证:SELECT '{"key":"val"}'::jsonb; - 最稳的方式:右键单元格 → Edit value → 在弹出编辑框中粘贴完整、格式正确的 JSON 字符串(可用在线 JSON 校验器提前验证)
真正容易被忽略的是:驱动设置里的 allowLoadLocalInfile 或 useServerPrepStmts 若为 false,也可能间接导致 JSON 解析上下文丢失 —— 这类底层 JDBC 参数虽不常动,但在调试 JSON 写入失败时值得扫一眼。










