navicat数据同步中忽略某张表需在「表映射」界面手动取消勾选该表;忽略字段则须进入对应表的options→ignore columns中指定,且必须关闭match fields by name并手动确认字段映射。

数据同步时怎么忽略某张表?
Navicat 的「数据同步」不提供全局表级排除开关,必须在「表映射」界面手动取消勾选目标表。点开「工具 → 数据同步」后,在左侧源库和右侧目标库之间出现的表列表中,找到如 log_user_action、tmp_report_2026 这类不需要同步的表,直接取消其复选框即可。
注意:取消勾选表 是彻底跳过该表所有操作——不会生成任何 SELECT、INSERT 或 UPDATE 语句。但若该表被其他已勾选表的外键引用(比如 orders.user_id → users.id),而你又启用了「比对外键」,Navicat 仍可能在其他表的 SQL 中写出对 users 的引用。验证是否生效:部署前点「预览 SQL」,搜索表名确认无残留。
如何只忽略某个字段而不影响整张表?
字段级忽略必须进到具体表的「Options」设置里,不能靠取消表勾选或全局选项实现。路径是:表映射页 → 找到目标表 → 点右侧 Options 按钮 → 勾选 Ignore columns → 在弹出框中输入要跳过的字段名,如 updated_at、sync_version、is_verified。
常见误操作包括:
- 在「高级选项」里找字段过滤入口——那里没有字段忽略功能
- 依赖
Match fields by name自动匹配,结果把status错连到created_at上,导致时间被覆盖 - 新字段设为
NOT NULL且无默认值,却未提前在目标表执行ALTER TABLE MODIFY,同步直接报错中断
为什么“忽略字段”后还是被同步了?
最常踩的坑是没关掉自动匹配逻辑。Navicat 默认启用 Match fields by name,一旦你忽略了一个字段(比如 source_system),它仍可能把源表同名字段值强行塞进目标表另一个字段(如 state),造成静默错位。
正确做法是:
- 取消勾选
Match fields by name - 手动拖拽确认每一组映射线,确保源
id→ 目标id、源name→ 目标name - 把不想参与比对或写入的字段统一加进
Ignore columns列表 - 若源是 UUID、目标是自增 ID,必须在「键映射」中指定业务唯一键(如
order_no)作为匹配依据,否则 Navicat 无法识别同一行
同步前必须检查的三个隐性依赖
忽略字段或表不是孤立动作,它会撬动底层行为逻辑:
-
目标表必须有主键或唯一索引:否则 Navicat 无法判断“哪一行该更新/跳过”,忽略字段后更易因匹配失败而批量跳过数据 -
WHERE 条件只能填在表 Options 里:想只同步新增的is_verified字段?得填id > 10000 AND created_at > '2026-07-25',而不是在「高级」页乱点 -
时区不一致会让 WHERE 失效:源库用 UTC、Navicat 客户端设 CST,created_at > NOW() - INTERVAL 1 DAY实际查的是 UTC 时间,漏掉 8 小时数据
真正生效的忽略,永远建立在字段映射可控、匹配依据明确、时间上下文一致的基础上。界面点几下不算完,预览 SQL + 手动 grep 表名和字段名才是最后一道防线。











