结构同步是Navicat唯一用于对比数据库元数据的功能,左侧为待更新库、右侧为基准库,方向错误会导致ALTER脚本反向执行;所有差异须逐项点开DDL比较确认COLLATE、COMMENT等软差异,并手动忽略无关项。

结构同步 是唯一能完成这件事的功能,不是“数据同步”也不是“数据传输”。它只管表、字段、索引、外键、COMMENT、COLLATE 这些元数据,不碰一行数据。
左侧必须是你想改的库,右侧必须是你要对齐的基准库
Navicat 界面只写“数据库1”“数据库2”,但从不标“源/目标”。一旦拖错顺序,生成的 ALTER TABLE 脚本会把你想升级的库当成被删字段的一方。
- 确认左侧是你当前要更新的那个库(比如
dev_branch_v2),右侧是你要对齐的基准库(比如main_branch_v3) - 比对完成后,紧盯顶部状态栏是否显示“将对
[左侧库名]应用以下更改”——这是唯一快速验方向的提示 - 发现方向错了别点“部署”,直接关掉重开,重新拖拽顺序
字段名不一致就无法自动匹配,得靠 DDL 比较人工核
Navicat 只按字段名做严格匹配,不会把 user_id 和 uid 当成同一字段。它只会判定:左侧缺这个字段 → 计划新增;右侧缺这个字段 → 计划删除。
- 点击差异项 → 切换到
DDL 比较选项卡,左右并排看完整CREATE TABLE语句,这是最权威依据 -
COMMENT差一个空格、索引字段顺序是(a,b)vs(b,a)、COLLATE是utf8mb4_0900_as_csvsutf8mb4_unicode_ci,都会标红或标黄 - 每条差异都点开,到底部逐行盯
CHARACTER SET、COLLATE、COMMENT、ENGINE—— 无关项右键 → “忽略此项” - 批量忽略不支持,必须手动一条条点
外键、索引、无主键表都能比,但依赖你提前建好连接
结构比对不依赖主键,也不要求字段顺序一致,它解析的是 SHOW CREATE TABLE 的语义结果。但如果你的两个库连不上、权限不足、或 MySQL 8.0+ 开启了 sql_mode=STRICT_TRANS_TABLES,某些 DDL 会被截断,导致比对失真。
- 确保两个连接都通过了
测试连接,且用户有SELECT和SHOW VIEW权限(SHOW CREATE TABLE所需) - 若出现
CREATE DEFINER = 'root'@'localhost'报错,说明导出时带了高权限 definer,需先在目标库执行SET SQL_LOG_BIN = 0;或改用低权限账号重连 - 跨版本比对(如 MySQL 5.7 ↔ 8.0)时,注意
JSON字段、隐藏索引、降序索引等新特性是否被正确识别


















