navicat 17数据字典不支持跨服务器平台导出,仅支持单连接下当前数据库;所谓“跨平台”指兼容mysql、postgresql等不同数据库类型。
navicat 17 数据字典是否真能跨服务器平台?
不能。所谓“跨服务器平台”仅指支持 mysql、postgresql、达梦等不同数据库类型,但不支持一次导出多个服务器上的对象。你必须为每个服务器单独打开连接,再分别生成字典。选中一个服务器后,数据字典功能只读取该连接下的当前数据库(mysql 中叫 schema,postgresql 中叫 schema 或 database),不会自动扫描其他已配置的连接。
导出 PDF 时中文乱码或字段注释为空怎么办?
这不是字体设置问题,而是连接层字符集未生效导致的。Navicat 在读取 information_schema.columns.column_comment 时,若连接初始化阶段没强制指定 UTF-8,MySQL 服务端会按默认字符集(如 latin1)返回内容,一转就成 ???。
- 检查连接属性 → 「高级」→ 「初始化命令」里是否写了
SET NAMES utf8mb4;(注意分号不能少) - 达梦或 PostgreSQL 用户需确认连接参数中显式设置了
characterSet=utf8mb4或client_encoding='utf8' - Navicat 17 对 PostgreSQL 的
pg_description读取依赖pg_catalog权限,低权限账号可能漏掉注释,建议用 owner 账号连接
为什么导出的字段类型全是 varchar(255)?
这是 Navicat 17 默认类型映射策略的结果:它优先读 data_type 字段(值为 tinyint、datetime 等),但后续推断长度时依赖 character_maximum_length 和 numeric_precision —— 这两个字段对非字符/数值类型是 NULL,最终 fallback 成 varchar(255)。
- MySQL/PostgreSQL 用户可在模型视图中右键数据库 → 「编辑数据库」→ 勾选
使用原始类型名称,强制读取column_type(如tinyint(1)) - PostgreSQL 用户若仍不准,可提前建视图关联
pg_type,把pg_catalog.format_type(atttypid, atttypmod)结果暴露为新列供 Navicat 读取 - PDF/HTML 导出后,把鼠标悬停在字段类型单元格上,实际原始类型常藏在
title属性里
视图、存储过程、函数怎么补进数据字典?
Navicat 17 的「数据字典」默认只查 information_schema.tables 和 information_schema.columns,天然不包含视图定义、函数逻辑、触发器源码——它们在 information_schema.views、information_schema.routines、information_schema.triggers 里,但工具不主动查询。
- 手动补查:执行
SELECT * FROM information_schema.routines WHERE routine_schema = 'your_db';,导出 CSV 后合并进主字典 - 用
SHOW CREATE VIEW view_name或pg_get_viewdef('view_name')提取 DDL,避免因权限不足看不到routines.routine_definition - MySQL 8.0+ 用户注意:
show_compatibility_56若关闭,routines表中routine_definition为空,需先执行SET show_compatibility_56 = ON;
真正麻烦的不是操作步骤,而是每次数据库结构变更后,没人会记得去重新跑一遍补全脚本——自动化同步必须靠外部脚本轮询导出目录 + git diff 触发提醒。











