navicat er图中出现information_schema等系统表,应右键选择“显示/隐藏表”取消勾选对应库表;或编辑连接→高级→勾选“只显示指定数据库中的表”并填入业务库名,实现一劳永逸过滤。

ER图里一堆information_schema、mysql、performance_schema表怎么办
Navicat 生成的 ER 图默认会把当前数据库连接下所有可读的表都拉进来,包括系统库里的表——这不是 bug,是它按权限列表直接扫 information_schema.TABLES 的结果。你不需要删它们,只需要让 ER 图“看不见”。
右键过滤比手动删快捷得多
在 ER 图界面(不是模型编辑器),鼠标右键空白处或任意表框,会弹出上下文菜单:
- 选「显示/隐藏表」→ 弹出全库表列表
- 取消勾选
information_schema、mysql、performance_schema、sys这几个库下的所有表 - 点「确定」后,对应表和连线立刻消失,但底层连接和元数据完全不受影响
这个操作不改数据库,也不动模型文件,纯客户端视图控制,刷新或重连后依然生效(前提是没清缓存)。
想一劳永逸?改连接级过滤规则
如果你每次连新库都要重复点,可以提前设好连接参数:
- 右键连接 → 编辑连接 → 「高级」选项卡
- 勾选「只显示指定数据库中的表」,填入你真正要画图的库名,比如
my_app_db - 保存后新建 ER 图,系统表根本不会被加载进视图
注意:这个设置只影响 ER 图和对象列表的可见范围,不影响 SQL 查询执行——你仍能正常查 SELECT * FROM mysql.user。
隐藏后外键连线断了?不是真断,是源表被藏了
常见现象:你藏了 mysql.user,但业务表的外键线突然没了。这是因为 Navicat 的 ER 图连线依赖“两端表都可见”。只要一端被隐藏,线就自动不画。
解决方法很简单:把被引用的系统表也加进显示列表,或者接受这个视觉简化——毕竟你本来就不该在业务 ER 图里维护对 mysql 库的外键逻辑。
真正容易被忽略的是:过滤只作用于当前连接的 ER 图视图,不传递给模型(Model)。如果之后用「逆向数据库到模型」生成模型再导出,那些系统表还会出现在模型里——得在模型编辑器里单独删或隐藏。











