DBeaver ER图不能单击空白处添加表,因其实体必须源自数据库对象或虚拟实体;正确方式为右键添加、拖拽或Add Table弹窗;外键关系需数据库真实约束或手动配置虚拟FK。

ER图里不能直接“加表”,必须通过右键菜单或拖拽方式把已有表导入画布,否则操作无效。
为什么点一下空白处无法添加新表
DBeaver的ER图编辑器不是自由绘图工具,它不支持手动画一个空盒子再填名字。所有实体都必须源自数据库真实对象(Tables、Views)或已定义的虚拟实体。空白画布上单击只会创建未绑定元数据的占位符,保存后不被识别,导出或同步时会丢失。
- 新建的ER图默认是“设计态”,但依然依赖数据库连接——没连库就点
Create Diagram,后续加表会报“no active connection” - 如果导航树里看不到表,先确认连接是否成功、模式(schema)是否展开、过滤器是否误启(比如勾选了“Show only tables with FKs”)
- 某些数据库(如SQLite、Hive 2.x)元数据不全,DBeaver可能读不到表列表,此时
View Diagram菜单项会灰掉
正确往ER图里加表的三种方式
本质是把数据库对象“挂载”到当前ERD上下文,不是凭空创建。
- 在数据库导航树中,按住
Ctrl(Windows/Linux)或Cmd(macOS)多选多个Tables或Views,然后右键 →Add to Diagram - 打开已有ER图后,在左侧导航树中找到目标表,直接拖拽到ER图画布上(松手即生效,支持跨模式拖拽)
- 在ER图编辑器内右键 →
Add Table(注意不是New Table),弹窗中可搜索、筛选、预览字段,勾选后确定
加完表后发现关系线没自动连上
外键关系不会凭空生成。DBeaver只对数据库中已声明的FOREIGN KEY约束自动连线;若表间靠命名约定或业务逻辑关联(比如user_id字段没建FK),图里就是孤立节点。
- 检查原表是否有
CONSTRAINT定义:执行SELECT * FROM information_schema.key_column_usage(PostgreSQL/MySQL)确认 - 对老系统,用
Virtual Foreign Key补救:右键某张表 →Edit Virtual Foreign Keys→ 手动指定引用字段和目标表 - 连线方向取决于外键定义位置:子表上有外键列,箭头从子表指向父表;反向连线需手动添加关系线并设置方向
保存与重用:ER图文件到底存在哪
不是存在数据库里,而是本地项目文件。这点容易误判导致协作断链。
- 通过
Database → Generate ERD生成的图,默认是临时标签页,关掉就丢——必须右键标签 →Save Diagram As...存为.erd文件 -
.erd文件本质是XML,可提交Git,但注意路径里的数据库连接ID是本地绑定的,队友打开时需重新映射连接 - 如果图里含虚拟外键,这些配置只存在
.erd文件中,换环境打开后仍可见,但不可跨连接复用
最常被忽略的一点:加表后不点击右下角蓝色齿轮图标调出Diagram Properties,就无法开启“显示字段类型”“隐藏无关联表”等关键视图控制——图看起来空荡荡,其实只是字段被默认折叠了。











