navicat 不支持一键生成可编辑 er 图,需通过逆向工程导入 mariadb 表结构并手动调整;关键前提是连接用户具备 information_schema 的 select 权限、指定初始数据库、勾选 include foreign keys,且外键必须为真实 innodb 约束。
navicat 本身不直接支持从 mariadb 实例“一键生成可编辑的 er 图”,但可以通过逆向工程(reverse engineering)把已有表结构转成 er 模型,再手动调整——这是最常用、也最可靠的路径。
确认 MariaDB 连接已成功且具备 SELECT 权限
ER 图生成依赖读取 information_schema 中的表结构、外键、索引等元数据。如果连接用户没有对 information_schema 的 SELECT 权限,或只连上了某个库但没选中具体数据库,Reverse Engineer 步骤会报错或只显示空画布。
- 连接时务必在“连接属性”里填入
Initial database(即你要建图的目标库名),不能留空 - 测试连接后,双击该连接进入,展开左侧导航树,确认能正常看到目标库下的所有表
- 若提示“Access denied for user ... to database 'information_schema'”,需联系 DBA 给该用户加权限:
GRANT SELECT ON information_schema.* TO 'your_user'@'%';
用 Reverse Engineer 生成基础 ER 图
这不是“自动画图”,而是把物理表结构导入到 Navicat Data Modeler 的建模环境里——后续才能拖拽、布局、导出。跳过这步,就只能手动画,没法复用真实字段和关系。
- 在已连接的 MariaDB 数据库上右键 → 选择
Reverse Engineer(不是“导出”或“转储”) - 弹窗中勾选要纳入建模的表(建议先少选几个核心表,避免一次性加载过多导致卡顿)
- 注意下方
Include foreign keys必须勾选,否则外键关系不会被识别为连线 - 点击
OK后,会打开一个新的Data Modeler标签页,表以矩形框形式出现,外键自动连成带箭头的线
导出为图片或 PDF 时常见失败点
很多人卡在“导出按钮灰掉”或导出后空白——根本原因通常是模型未激活或未保存为 .ndm 文件。
- 刚逆向完的模型默认是“未保存状态”,此时
File → Export as Image或Export as PDF是禁用的 - 必须先执行
File → Save As,保存为.ndm文件(例如blog_model.ndm),之后导出功能才可用 - 导出前建议切换到
Layout视图(顶部工具栏按钮),手动调整表位置,否则自动生成的布局可能重叠、挤在一起 - PDF 导出若内容被截断,尝试在
Export Settings中调高Page size(如设为 A3)或关闭Fit to page
外键没连上?别急着重画
MariaDB 的外键约束必须满足:引擎为 InnoDB、字段类型完全一致(含 unsigned)、字符集相同。Navicat 只识别真正生效的外键,不会猜测逻辑关联。
- 检查表引擎:
SHOW CREATE TABLE your_table;看是否含ENGINE=InnoDB - 确认外键列定义一致,比如主表是
INT UNSIGNED,子表也必须是INT UNSIGNED,不能只是INT - 如果只是业务上有“隐式关联”(比如都叫
user_id但没建外键),Navicat 不会自动连线——得手动在 Data Modeler 里用Relationship Tool拉线,并设置参照完整性
真正麻烦的不是画图,而是让 MariaDB 的元数据“诚实可信”。外键缺失、引擎混用、权限不足,都会让逆向结果残缺。与其反复导出失败,不如先在命令行跑一遍 SHOW CREATE TABLE 和 SELECT * FROM information_schema.KEY_COLUMN_USAGE 确认底层结构干净。











