Navicat 15 连 MySQL 8.0+ 需勾选“Use MySQL Native Password”并重填密码;同步至低版本需设兼容模式;连 PostgreSQL 15 应升级至 Navicat 17;结构同步异常需检查权限、SQL 模式及标识符引号。
Navicat 15 连 MySQL 8.0+ 报 caching_sha2_password 错误
这不是连接失败,而是驱动不认认证插件。navicat 15 自带的 mysql 驱动默认只支持 caching_sha2_password 之前的认证方式,而 mysql 8.0+ 默认启用了它。
实操建议:
- 打开 Navicat → 右键已有连接 → “编辑连接” → 切换到“高级”页
- 勾选 Use MySQL Native Password
- 重新输入密码(必须重填,否则不生效)
- 点击“测试连接”,通过后再同步
注意:该选项仅影响新建立的连接会话;若服务器端已禁用 mysql_native_password 插件(比如 DBA 显式执行过 UNINSTALL PLUGIN mysql_native_password),勾选也无效,此时必须联系 DBA 恢复插件或改用跳板机中转。
同步时生成 SQL 报 ERROR 1064(语法错误)
Navicat 15 默认按「当前连接的数据库版本」生成 DDL,但如果你连的是 MySQL 8.0,却往 MySQL 5.7 同步,就会冒出这类错误——不是你写错了,是 Navicat 用了目标库不认的语法。
常见触发点:
- CREATE OR REPLACE VIEW(5.7 不支持)
- 字段默认值含函数,如 DEFAULT (NOW()) 或 DEFAULT (JSON_OBJECT())
- 校对规则为 utf8mb4_0900_as_cs(MySQL 8.0.1+ 引入)
- DDL 中带 ALGORITHM=INSTANT 或 LOCK=NONE
解决路径:
- 在同步向导中进入“高级”设置 → 找到 Compatibility Mode → 明确选 MySQL 5.7
- 若不确定目标版本,宁可选更低的(如 MySQL 5.6),它生成的语句兼容性更广
- 该模式会自动:
• 把 CREATE OR REPLACE 拆成 DROP + CREATE
• 将 utf8mb4_0900_as_cs 降级为 utf8mb4_general_ci
• 移除所有 ALGORITHM/LOCK 子句
• 避免在 DEFAULT 中使用函数表达式
PostgreSQL 15 连接报 datlastsysoid 字段不存在
Navicat 15 的 PostgreSQL 驱动仍尝试查询已被移除的系统字段 datlastsysoid,这是典型的老客户端适配新服务端问题。
唯一稳妥解法是升级 Navicat:
- Navicat 15 对 PostgreSQL 15 支持不完整,官方已在 Navicat 17 中修复此问题
- 下载安装 Navicat Premium 17+,重连即可,无需改数据库或手动编辑 DLL
- 旧版修改 libcc.dll 属高危操作,可能引发连接泄漏、崩溃或元数据解析错乱,不建议生产环境尝试
如果暂时无法升级,可临时降级 PostgreSQL 至 14.x(需备份后操作),但要注意功能回退和 WAL 兼容风险。
结构同步卡在“正在解析 SQL”或提示表不存在
这往往不是驱动版本问题,而是 Navicat 15 在解析元数据时权限或 SQL 模式不兼容导致的静默失败。
排查要点:
- 确认连接用户对 INFORMATION_SCHEMA 有 SELECT 权限;缺失时 Navicat 会降级解析逻辑,漏读约束
- 若目标库启用 STRICT_TRANS_TABLES,Navicat 15 的反向建模 SQL 可能被拒绝;可临时执行 SET sql_mode = ''; 后再同步(仅当前会话)
- 表名含短横线(如 user-log)必须用反引号包裹;若模型里显示为 user-log 而非 `user-log`,说明解析阶段已丢引号,后续 DDL 必报语法错误
这类问题容易被当成“同步失败”,实际是建模阶段就断了——务必先验证模型能否正确加载,再谈同步。



















