Navicat 逆向生成 MariaDB ER 图失败的主因是权限、范围和大小写匹配问题,需确保用户对 information_schema 有 SELECT 权限,尤其 MariaDB 8.0+ 需显式授权。
navicat 能逆向生成 mariadb 的 er 图,但实际操作中常卡在「模型空白」「外键不连线」「中文注释丢失」这三处——根本原因不是软件bug,而是权限、范围和大小写匹配没到位。
逆向前必须确认 information_schema 可查
Navicat 依赖 information_schema 读取表结构、列类型、主键、外键定义。MariaDB 默认允许访问,但生产环境常限制该库权限。
- 在 Navicat 查询窗口执行:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'your_db_name';,若报Access denied,说明权限不足 - MariaDB 8.0+ 需显式授权:
GRANT SELECT ON information_schema.* TO 'your_user'@'%'; FLUSH PRIVILEGES; - 若用 root 连接正常但普通用户失败,别改连接账号——直接找 DBA 加权限,硬切 root 有安全风险
- SQLite 或极老版 MariaDB(
外键关系线不出现?检查是否批量选中了引用表
Navicat 不会跨未选中的表解析外键。哪怕 DDL 里明确定义了 FOREIGN KEY (order_user_id) REFERENCES users(id),只要 users 表没被一起加入逆向范围,连线就为空。
- 右键数据库 →「逆向数据库到模型」,而不是右键单个表 →「逆向表到模型」
- 若只想逆向部分表,在弹出的表列表中务必勾选「所有涉及外键的被引用表」,比如订单表关联用户表、地址表,三个都得勾
- MariaDB 默认大小写敏感(
lower_case_table_names=0),而 Navicat 有时自动转小写匹配。若物理表名是UserProfile,但逆向时 Navicat 查userprofile就找不到——检查服务器配置,或统一用小写建表
导出高清 ER 图:PDF 比 PNG 更可靠
截图模糊、缩放失真、字体糊成块——这是直接截图最常遇到的问题。Navicat 原生导出功能支持矢量格式,但默认选项藏得深。
- 建模画布右上角点击
Export Model(不是文件菜单里的 Export) - 格式选
PDF:文字清晰、缩放无损、方便嵌入汇报文档;选PNG时务必把分辨率调到300 dpi以上,否则打印发虚 - 导出前先手动调整画布布局:拖动表位置避免连线交叉,用顶部工具栏的
Auto Layout一键整理(但可能打乱你已排好的逻辑顺序) - 中文注释若丢失,大概率是 MariaDB 驱动版本太低(
mysql-connector-java 8.0.28+或mariadb-java-client 3.0+才完整支持column_comment读取)
真正卡住的点往往不在操作步骤,而在「以为逆向是黑盒,其实它严格依赖元数据完整性」——权限没开全、表没选全、大小写对不上,任何一个都会让 ER 图变成一堆孤立的方块。动手前花两分钟验证 information_schema,比反复重试高效得多。


















