DBeaver将布尔字段渲染为复选框[ ]/[✓],双击可切换状态,底层值仍为TRUE/FALSE或1/0;编辑时仅响应空格、Enter、双击,忽略字母输入以防拼写错误,导出时转为文本但数据库存储不变。

直接双击方框就能编辑,不是输入 true/false 文本,也不是点开单元格再敲字。 DBeaver 默认把布尔字段渲染成复选框 [ ] 或 [✓],这是 UI 层的显示逻辑,底层值仍是标准 SQL 的 TRUE/FALSE(PostgreSQL)或 1/0(MySQL),编辑行为也完全基于这个映射关系。
为什么双击方框就切换,但输“true”没反应?
DBeaver 的结果集表格对布尔列做了专用编辑器绑定:它拦截键盘输入,只接受空格、Enter、Tab 等触发切换的操作,而忽略字母输入。这不是 bug,是防止误输拼写错误(比如 "True"、"tue")导致 SQL 执行失败。
- 空格键:在
[ ]状态下按空格 → 变成[✓];在[✓]下按空格 → 回到[ ] - Enter 键:效果同空格,适合快速连续编辑多行
- 鼠标双击:最常用,直接翻转当前状态
- 输入
true/false/1/0:全部被忽略,光标不会进入编辑态
导出或复制时布尔值变成“true”/“false”文本,但数据库里存的是 1/0?
这是类型映射差异造成的表象错觉。DBeaver 在导出(如 XLSX、CSV)或复制到剪贴板时,会把布尔值转为可读字符串,但实际写入数据库时仍走原生类型协议。例如:
- MySQL 表字段是
TINYINT(1):DBeaver 显示[✓],导出 CSV 会写true,但 INSERT 语句仍发1 - PostgreSQL 字段是
BOOLEAN:显示和导出都用true/false,底层协议也传布尔字面量 - 关键看建表语句:
DESCRIBE table_name或\d table_name查字段类型,别只信导出结果
编辑后保存失败,提示 “Data type mismatch” 或 “Invalid boolean value”
常见于连接某些 JDBC 驱动较老的数据库(如旧版 Hive、部分 Oracle thin driver),它们不支持直接绑定布尔参数,DBeaver 会尝试转成字符串再解析,一旦中间环节类型推断出错就报这个错。
- 临时解法:右键结果集 → “Edit Record”(不是直接双击),在弹窗里手动选
TRUE/FALSE或填1/0 - 根治办法:升级对应数据库的 JDBC 驱动(比如 Hive 改用
hive-jdbc-3.1.3.jar及以上) - 验证方式:执行
SELECT pg_type.typname FROM pg_attribute JOIN pg_type ON pg_attribute.atttypid = pg_type.oid WHERE pg_attribute.attrelid = 'your_table'::regclass AND pg_attribute.attname = 'your_bool_col';(PostgreSQL)确认类型确实是bool,而非int2或text
真正容易被忽略的是:DBeaver 的布尔编辑只作用于「已加载的结果集」,如果数据量大启用了“仅加载可见行”,那么滚动到底部新加载的行,其布尔列初始状态可能未同步——需要手动触发一次刷新(F5)或重新执行查询,否则看到的 [ ] 可能是缓存占位符,不是真实值。


















