必须先点Compare&Preview才能看到真实差异行,该步骤可显示具体插入、更新、删除的行及字段级高亮差异,且需勾选“比较所有记录”以避免漏检字段值不同;关闭后差异信息即丢失,需手动存证。
点 Compare&Preview 才能看到真实差异行
navicat 的数据同步不是“执行完再告诉你改了啥”,而是必须先点 compare&preview,才能看到具体哪些行要被插入、更新或删除。这个按钮在表映射页底部,不是可选动作,是唯一能展开行级对比的入口。
常见错误是直接点 Compare&Deploy 跳过预览——结果同步完才发现目标库少了几百条配置数据,但日志里只写“DELETE 217 rows”,不列 ID 或内容,根本没法反查。
- 点开某张表后,底部窗格会并排显示源库和目标库的原始记录,字段值不同处用黄色背景高亮
- 右键某行可选「排除此项」,比如跳过仅
updated_at不同的行(业务自动更新导致) - 若预览显示「删除 N 行」但你没手动删过,说明目标库有源库没有的脏数据,得人工确认是否该保留
勾选“比较所有记录”才能发现字段值差异
默认配置只比主键存在性,Compare&Preview 会漏掉字段内容不同但主键相同的行。必须在第二步配置页主动勾选 比较所有记录,否则你以为数据一致,其实 name 字段早被改成 NULL 了。
字符集或时区不一致也会导致误报差异:比如源库 utf8mb4 存的 emoji,在 utf8 目标库里读出来变成问号,预览就标红——但界面不提示原因,得自己查 SHOW CREATE TABLE。
- 无主键表会被全字段比对,速度慢且结果混乱;提前加
PRIMARY KEY或UNIQUE索引更稳 -
TIMESTAMP字段若一方存 UTC、一方存本地时间,也会高亮为“不同”,实际可能是逻辑一致
预览结果不持久,关掉就丢,必须手动存证
Compare&Preview 是运行时内存计算,关闭窗口后所有行级差异信息彻底消失。Navicat 不保存也不归档,下次重跑还得重新比对——而比对过程本身不写任何日志。
想留痕只能靠人肉操作:在预览页点某张表 → 全选底部数据网格 → Ctrl+C 复制 → 粘贴到文本文件存档。或者更稳妥的做法是,同步前先在目标库跑一句:
SELECT 'orders' AS table_name, COUNT(*) AS cnt, MD5(GROUP_CONCAT(id ORDER BY id)) AS chk FROM orders;
把结果连同任务名、时间戳一起记到外部 sync_audit 表里。
真正容易被忽略的是:预览里显示“插入 0 行,更新 0 行,删除 5 行”,不代表这 5 行是误删——可能只是源库最近删了测试数据,但你根本不知道那几条 ID 是什么,因为预览不显示 WHERE 条件细节。


















