“查看 er 图”无法导出 pdf,因其仅为只读快照,无导出功能;真正可导出需通过「模型 → 逆向数据库到模型」生成独立模型文件(.nm),并完成权限、连接、只读模式、模型属性、保留字、大小写及验证等关键配置。
navicat 17 里“查看 er 图”和“生成可交付 er 图”是两回事,点开数据库右下角的 er 视图图标只能看快照,不能编辑、不能导出;真要生成 pdf/png 或用于交付的 er 图,必须走「模型 → 逆向数据库到模型」路径。
为什么点“查看 ER 图”后导不出 PDF?
这个按钮渲染的是实时元数据快照,本质是前端对 information_schema 的只读可视化,不经过模型工作区。它没有画布控制权,不保存布局,右键菜单里根本没有导出选项——你截图再高清,也解决不了汇报或交接需求。
真正能导出的路径只有一条:顶部菜单 → 模型 → 逆向数据库到模型。这一步会新建一个独立的模型文件(.nm),后续所有编辑、校验、导出都基于它。
逆向前必须确认的三件事
否则大概率缺表、断外键、字段类型全标为 UNKNOWN:
- 当前连接用户对
INFORMATION_SCHEMA有SELECT权限(仅业务库权限不够,需 DBA 执行GRANT SELECT ON INFORMATION_SCHEMA.* TO 'user'@'%') - 连接类型必须是
MySQL (Native),不能选 ODBC 或 SSH 隧道未启用 Keep Alive - 目标库不能处于只读模式;PostgreSQL 还要检查事务隔离级别是否为
READ ONLY,否则外键元数据为空
模型属性不核对,导出的 SQL 在目标库必报错
模型左下角的 模型属性 按钮不是摆设。点开后必须人工确认:
- 数据库类型与实际版本严格一致(例如模型设成
MySQL 8.0,但连的是MySQL 5.7,JSON字段会直接生成失败) - 所有表名/字段名是否撞了保留字(如
order、group),Navicat 默认不加反引号,执行时抛ERROR 1064 - 外键引用的父表名大小写是否完全匹配(
users≠Users),拼错一个字母,FOREIGN KEY REFERENCES就指向空表
导出前别忘了 Validate Model
右键模型画布 → Validate Model,它会立刻指出缺失主键、孤立表、外键指向不存在表等问题。这不是可选步骤——Navicat 17 不做语法预检,也不提示保留字冲突,等你导出 SQL 再执行才发现错误,已经晚了。
验证通过后,导出格式选 PDF(正式汇报)或 PNG(快速共享),分辨率建议设为 300 dpi。注意:导出的是当前画布布局,拖拽调整过表位置才会有合理排版,别直接用默认堆叠样式交差。











