还原前必须手动创建同名空数据库,.nb3文件不包含create database语句;还原操作须在“备份”节点右键触发,不可在数据库或连接节点操作。

还原前必须先创建目标数据库
Navicat 的 .nb3 备份文件不包含 CREATE DATABASE 语句,也不会自动建库。如果你直接右键“还原备份从”并选中 .nb3 文件,还原会失败或报错 database "xxx" does not exist(PostgreSQL)或类似提示(MySQL 场景下也可能表现为权限/对象找不到)。必须手动创建一个**空的、同名的**目标数据库,且字符集/排序规则需与原库一致(尤其是 MySQL)。
操作路径:连接 → 右键 → 新建数据库,输入名称,确认字符集(如 utf8mb4 + utf8mb4_0900_ai_ci),点击确定。
还原操作必须通过“备份”节点右键触发
不能在数据库节点或连接节点上右键找“还原”——.nb3 是 Navicat 专有备份格式,只挂载在“备份”这个独立节点下。常见误操作是:右键某个数据库 → 找“还原备份”,结果菜单里根本没有该选项。
正确路径如下:
- 在左侧连接树中,展开当前连接 → 找到并点击
备份节点(不是数据库名,是同级的灰色图标项) - 右键
备份→ 选择还原备份从 - 浏览并选中你的
xxx.nb3文件 → 点击打开 - 在弹出的还原对话框中,务必在“目标数据库”下拉框中手动选择你刚创建的那个空库
“选择对象”和“高级”选项影响数据覆盖行为
默认全选会清空目标库中所有同名表再插入备份数据,但如果你只想恢复部分表,或想保留现有新增表/视图/函数,就得干预这两个环节:
-
选择对象标签页:取消勾选不需要还原的表,避免误删 -
高级标签页:删除已存在的对象默认勾选 —— 若不勾选,Navicat 会跳过已存在表,仅插入/更新数据(但可能因主键冲突失败);忽略错误建议勾选,防止某条 SQL 报错导致整个还原中断 - PostgreSQL 用户注意:
高级中的使用 pg_restore选项仅对 PostgreSQL 有效,启用后走原生命令行路径,速度更快、兼容性更好,但要求本地装有对应版本的pg_restore工具
还原日志里出现 [Msg] Finished - Successfully 不代表数据完全一致
这个提示只说明 Navicat 成功执行完备份文件里的全部操作指令,但不校验数据内容是否与源库一致。容易被忽略的几个点:
- 外键约束、触发器、存储过程等对象若在“对象”设置中未勾选,就不会还原
- MySQL 的自增 ID 可能重置为备份时的值,而非按当前最大值续增
- PostgreSQL 的序列(
SEQUENCE)值不会自动同步到备份时刻,需手动SELECT setval('xxx_id_seq', (SELECT MAX(id) FROM xxx)); - 如果还原中途被手动关闭窗口,日志可能仍显示成功,但实际只完成部分表 —— 务必检查目标库表数量和行数











