Navicat 16 ER图不显示外键连线,主因是默认未启用“加载外键”选项,需手动勾选工具→选项→模型中的该设置并重启;同时须确保数据库存在真实FOREIGN KEY约束、连接账号具备INFORMATION_SCHEMA等系统表SELECT权限。
Navicat 16「加载外键」选项默认关闭,必须手动启用
navicat 16 启动后,默认不查询 information_schema 中的外键元数据,所以即使数据库里有完整 foreign key 约束,er 图也必然没连线。这不是 bug,是设计上的显式开关控制。
路径是:工具 → 选项 → 模型,找到「加载外键」这一项,确认已勾选 ✅。这个设置是全局的,不随 .mwb 文件保存,每台机器都得单独配。
改完必须重启 Navicat 才生效——部分版本即使重启模型窗口也不够,得彻底退出再重进。
外键存在但 ER 图仍无连线?先验证数据库是否真有约束
Navicat 只认物理定义的外键,不识别命名约定(如 user_id)、注释或应用层逻辑。连线缺失,90% 情况是数据库根本没建约束。
- MySQL:执行
SHOW CREATE TABLE orders;,确认输出含CONSTRAINT ... FOREIGN KEY字样 - PostgreSQL:运行
\d+ orders,检查 Foreign-key constraints 区域非空 - SQL Server:查
sys.foreign_keys视图,不能只看列名带_id
常见漏点:MyISAM 引擎不支持外键;字段类型/长度不一致(如 BIGINT vs INT);被引用字段没 PRIMARY KEY 或 UNIQUE 约束。
连接账号权限不足,导致外键元数据读不到
Navicat 是通过查询系统表来提取外键信息的,不是靠猜。如果当前连接账号没权限,它就什么也看不见,图里自然没线。
关键权限要求:
- MySQL:需对
INFORMATION_SCHEMA.KEY_COLUMN_USAGE和INFORMATION_SCHEMA.TABLE_CONSTRAINTS有SELECT权限 - PostgreSQL:需能查
pg_constraint和pg_attribute
最稳妥的授权语句:GRANT SELECT ON INFORMATION_SCHEMA.* TO 'your_user'@'%';。仅授部分表容易漏,且 Navicat 连接测试成功 ≠ 有系统表读取权,得单独验证。
刷新按钮不重载元数据,必须重建模型
右键图空白处点「刷新」,只是重绘当前已加载的内容,不会重新扫描数据库。哪怕你刚加了外键、开了权限、勾了选项,这个动作也完全无效。
正确流程是:
- 确保「加载外键」已启用 + 账号有权限 + 表真有
FOREIGN KEY约束 - 关闭当前模型窗口
- 右键数据库 → 「逆向数据库到模型」,从头重建整个模型
别依赖 Ctrl+R 或右键「刷新」,那个动作不触发元数据重拉——这是最容易被跳过的实操断点。


















