Navicat Premium 不支持无物理连接的离线导入,所有操作必须建立实时数据库连接;所谓“离线”实为先导出.sql文件再在已连通目标库的机器上运行,且需提前创建同名utf8mb4编码数据库、校验字符集与MySQL版本兼容性,并注意密码绑定和LOAD DATA INFILE等服务端限制。

Navicat Premium 本身不支持真正意义上的“无物理连接”导入
Navicat 是一个客户端工具,所有数据库操作(包括导入)都必须建立到目标数据库的实时网络连接。所谓“离线导入”,实际是指:先在本地生成可执行的 .sql 文件,再在另一台已连通目标库的机器上运行该文件。Navicat 本身无法绕过 TCP/IP 或本地 socket 连接直接写入 MySQL 数据文件(如 ibd 或 frm)。
导出 SQL 文件时必须注意字符集与兼容性开关
导出环节若忽略配置,会导致导入失败或乱码,尤其跨环境迁移时:
- 导出前务必确认源库连接使用的是
utf8mb4字符集(右键连接 → “编辑连接” → “高级”页 → 勾选“使用MySQL字符集”并设为utf8mb4) - 在“转储 SQL 文件”向导中,取消勾选“添加 SET FOREIGN_KEY_CHECKS=0”——否则导入时外键约束被跳过,数据一致性可能受损
- 如果目标 MySQL 版本 ≥ 8.0,导出时应启用“兼容 MySQL 8.0”选项(v16+ 支持),否则
JSON字段、角色语法等会报错 - 避免勾选“包含 USE 语句”,因为导入时若数据库名不一致,
USE `xxx`会直接报错
导入前必须手动创建同名空数据库且编码匹配
Navicat 的“运行 SQL 文件”功能不会自动建库,也不会校验字符集是否一致。常见错误是:
- 导入时报错
Unknown database 'xxx':说明没提前新建数据库 - 导入后中文显示为问号或乱码:大概率是新建数据库时用了
utf8而非utf8mb4,或未指定COLLATE utf8mb4_0900_ai_ci - 导入中途卡住或报错
Packet for query is too large:SQL 文件含超大 BLOB 或单条 INSERT 过长,需在“运行 SQL 文件”窗口中调高“最大包大小”(默认 1MB,可设为 100MB)
正确做法是:右键连接 → “新建数据库”,填名称、字符集选 utf8mb4、排序规则选对应版本推荐项(如 MySQL 8.0 用 utf8mb4_0900_ai_ci),再右键该库 → “运行 SQL 文件”。
“离线”流程中密码和路径最容易被忽略
导出的 .sql 文件是纯文本,但它的可用性依赖两个隐性前提:
- 导入机器上的 Navicat 必须能连上目标数据库——这意味着连接配置里的密码不能是星号占位,必须已测试通过;若从一台机器导出、换另一台导入,旧密码大概率失效(Navicat 加密绑定本机硬件),需手动重输并点击“测试连接”
- 如果 SQL 文件里含
LOAD DATA INFILE语句(例如从 CSV 导入),它依赖 MySQL 服务端的secure_file_priv路径,而 Navicat 无法绕过这个限制——此时必须改用“导入向导”或把文件放到服务端允许路径下
真正需要离线协作时,最稳的方式不是传 .sql,而是用 Navicat 内置的“数据传输”功能直连两边数据库——只要源库和目标库之间网络可达,你本地 Navicat 只需作为中控,不承担数据搬运压力。


















