如何在Navicat 17中一键逆向生成MySQL数据库ER图

胖芳大大_2931

胖芳大大_2931

2026-10-10

236人浏览

原创

“一键逆向生成”在navicat 17中不存在,卡在“正在加载表结构”实为information_schema查询失败,需授权select权限、启用show_compatibility_56、使用mysql(native)驱动,并手动精选核心表、确保innodb引擎与显式foreign key约束存在。

如何在navicat 17中一键逆向生成mysql数据库er图

“一键逆向生成”在 Navicat 17 里根本不存在——点下“逆向数据库到模型”后卡住、缺表、断线、外键不连,全是因前置条件没满足,不是操作错了,是权限、驱动、约束三者中至少漏了一个。

为什么点“逆向数据库到模型”后卡在“正在加载表结构”

这不是 Navicat 卡,是它在后台执行 SELECT 查询 INFORMATION_SCHEMA 失败了,静默等待超时。

  • 手动验证:在查询窗口运行 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_db',若报错或返回 0,说明账号没权限——需 DBA 执行:GRANT SELECT ON INFORMATION_SCHEMA.* TO 'user'@'%'
  • MySQL 8.0+ 用户必须临时启用兼容模式:SET SESSION show_compatibility_56 = ON(会话级即可,无需 SUPER 权限)
  • 连接类型必须是 MySQL (Native);用 ODBC、SSH 隧道未开 Keep Alive、或认证插件为 caching_sha2_password(Navicat

勾选表时不能点“全选”,否则大概率失败

Navicat 对每张表单独发 SHOW CREATE TABLE,全库扫描在表数 >300 时极易超时或界面无响应。

DrugBank 数据库
DrugBank 数据库

访问并分析来自 DrugBank 数据库的全面药物信息,包括药物属性、相互作用、靶点、通路、化学结构和药理学数据。用于药物数据、药物发现研究、药理学研究、药物-

下载
  • 手动展开数据库节点,只勾选核心业务表(如 users、orders、products),跳过日志表、归档表、分表后缀(如 logs_202501)
  • 若模块多,分两次逆向:先导 auth 相关表,再导 trade 相关表,单次不超过 20 张
  • 务必取消勾选 Include views——同名视图与表(如 order_summary 表 + order_summary 视图)会导致实体重复、连线错乱

外键线没连上?不是 Navicat 漏画,是库里没建真约束

Navicat 17 完全不推测关系,只读 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 中的显式定义。字段名匹配(如 user_id)毫无作用。

  • 运行 SHOW CREATE TABLE orders,确认输出含完整外键语句,例如:CONSTRAINT `fk_orders_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
  • 引擎必须是 InnoDB;MyISAM 表即使字段名一致,也不会被识别
  • SQL 文件导入建表时漏掉 FOREIGN KEY 子句、或 ORM 工具(如 Django syncdb)未启用外键迁移,都会导致关系断开
  • 右键模型画布 → Validate Model,它会直接标出缺失约束的表和字段

导出 PDF/PNG 前必须调缩放和字体,否则模糊挤成一团

Navicat 的 ER 图渲染器不支持 CSS 控制,失真问题几乎必现,靠默认设置导出基本不可用。

  • 进 工具 → 选项 → 模型 → 字体,Windows 下设为 Microsoft YaHei 或 SimSun,禁用默认的 Dialog 字体
  • 导出前点击画布右上角的「适应窗口」按钮,再手动缩放到 100%~150% —— 不做这步,导出的 PNG/SVG 会按原始画布比例拉伸失真
  • 字段过多重叠?右键单张表 → 编辑表 → 关闭 自动排列字段,手动拖动收窄高度

真正麻烦的从来不是点几下鼠标,而是确认当前连接用户是否能查 pg_catalog(PostgreSQL)或 INFORMATION_SCHEMA(MySQL)、驱动是不是原生、外键有没有被 NOT VALID 标记——这些细节不人工核对,模型一生成就残缺,后面所有调整都是白费力气。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

2153

6

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.21

1319

5

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

775

5

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.19

2932

5

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.25

4908

4

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.08

1119

3

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.11

5171

4

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

2023.08.14

4562

7

mysql事务隔离级别
mysql事务隔离级别

mysql规范中定义了四种事务隔离级别,不同的隔离级别对事务的处理有所不同。本专题为大家提供mysql事务隔离级别相关的文章内容,大家可以免费体验。

2023.08.16

6014

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 183人学习