.nb3 文件无法直接还原到远程云服务器,因其是加密且绑定源环境的二进制备份,依赖原mysql版本、权限、字符集及navicat版本,易报invalid backup file等错误。

.nb3 文件不能直接还原到远程云服务器,必须转成 SQL 脚本或用数据传输功能
为什么双击 .nb3 文件在新服务器上点“还原”会失败
Navicat 生成的 .nb3 文件是加密、绑定源连接上下文的二进制备份,不是通用格式。它依赖原环境的 MySQL 版本、用户权限、字符集配置甚至 Navicat 版本。即使远程云服务器 MySQL 版本一致,也会报错 Invalid backup file 或 Unknown database 'xxx'。
常见错误现象:
- 点击“还原备份”后卡在“正在加载备份信息”
- 弹窗提示“无法识别数据库对象”或“备份文件无效”
- 还原成功但表结构存在、数据为空,或部分表缺失
正确做法:用“数据传输”直连两台服务器同步
这是最稳妥、无需中间文件、能自动处理字符集和主键冲突的方式。
操作前提:
- 远程云服务器已创建同名空数据库,且显式指定字符集,例如:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; - Navicat 左侧同时连接了本地数据库和云服务器数据库(云连接需通过 SSH 隧道或白名单直连)
- 云服务器数据库用户有
CREATE、INSERT、DROP权限
关键步骤:
IT技术解决互联网公司网站模板是一款适合提供APP设计、网页开发、SEO优化、云服务、数据分析等服务的互联网公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- 右键本地库 → 选择
数据传输 - 左侧选源(本地库),右侧选目标(云服务器上的空库)
- 勾选
结构和数据;点击选项→ 启用删除目标表中已存在的记录和创建目标表 - 若某张大表失败,可取消全选,单独勾选该表重试
注意:数据传输 不复制存储过程、事件、触发器、用户权限——这些必须额外导出并手动执行。
备选方案:导出 SQL 再在云服务器执行
适合需要审核脚本内容、做轻量修改(如替换表前缀、跳过某些大日志表)的场景。
导出时必须注意:
- 右键本地库 →
Dump SQL File→ 选Structure and Data(不能只选 Structure) - 务必勾选
添加 DROP TABLE IF EXISTS,否则云服务器上表已存在会报错 - 检查导出的
.sql文件开头是否有SET NAMES utf8mb4;或SET CHARSET utf8mb4; - 若原库是 MySQL 5.7,目标为 8.0+,需手动删掉
DEFINER=`user`@`host`子句,否则导入失败
在云服务器上执行:
- 先确认已连接目标数据库(右键库名 →
Execute SQL File) - 不要直接拖入 SQL 文件到查询窗口——Navicat 不会自动识别
USE语句,容易写进错误库 - 若报错
Authentication plugin 'caching_sha2_password' cannot be loaded,需提前在云服务器运行:ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
还原后必须验证的三个细节
很多人还原完就以为结束了,结果上线后出问题。以下三点最容易被忽略:
- 检查
information_schema.TABLES中各表的ENGINE类型是否一致(比如本地是 InnoDB,云上误建为 MyISAM) - 运行
SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'mydb' AND COLLATION_NAME IS NULL;确认没有字段漏设排序规则 - 对含中文字段执行
SELECT HEX(column_name) FROM table LIMIT 1;,看是否为EFBBBF(BOM 头)或乱码字节,判断是否真用了 utf8mb4
还原不是终点,而是验证的起点。尤其跨版本、跨环境时,SQL 脚本里藏的隐性兼容问题,往往要到业务查询时报错才暴露。










