Navicat导出数据字典不包含视图/存储过程,因默认仅查tables和columns表;字段类型全显示为varchar(255)是类型映射简化所致;中文注释乱码源于连接字符集未设utf8mb4;自动同步需外部脚本监控导出目录。
导出数据字典时 information_schema 查不到视图或存储过程?
navicat 的「数据字典」导出默认只走 information_schema.tables 和 information_schema.columns,这两张表天然不包含视图定义、函数逻辑、触发器、存储过程源码——它们在 information_schema.routines、information_schema.views、information_schema.triggers 里,但 navicat 模型工具默认不查。
实操建议:
- 手动补查:在 Navicat 查询窗口执行
SELECT * FROM information_schema.routines WHERE routine_schema = 'your_db';,把结果另存为 CSV 补进字典文档 - 用
SHOW CREATE VIEW/SHOW CREATE PROCEDURE逐个提取 DDL,避免依赖information_schema的权限限制(比如低权限账号看不到 routine_definition) - 注意 MySQL 8.0+ 默认关闭
show_compatibility_56,导致routines表中routine_definition为空,需确认该变量是否开启
Navicat 模型工具导出的字典里字段类型全是 varchar(255)?
这是 Navicat 读取 information_schema.columns.data_type 后做了简化映射的结果。它把 tinyint、int、datetime 全归为通用类型,再靠 character_maximum_length 和 numeric_precision 推断长度——但这两个字段对非字符/数值类型是 NULL,最终 fallback 成 varchar(255)。
实操建议:
- 导出前右键模型 →「编辑数据库」→ 勾选「使用原始类型名称」(仅限 MySQL/PostgreSQL),强制读取
column_type字段(如tinyint(1)、datetime) - PostgreSQL 用户注意:
information_schema.columns.udt_name更可靠,但 Navicat 不默认用它;可提前建视图把pg_catalog.pg_type关联进来供模型引用 - 导出为 HTML 时,字段类型列实际值藏在
title属性里(hover 可见),别只信表格显示内容
导出的字典 PDF 里中文乱码或字段注释全空?
根本原因不是字体问题,而是 Navicat 模型工具在生成字典时,对 information_schema.columns.column_comment 的读取受连接字符集影响。即使数据库用 utf8mb4,如果 Navicat 连接参数没显式指定 characterSet=utf8mb4,MySQL 服务端会按 latin1 返回 comment 内容,一转就成 。
实操建议:
- 检查 Navicat 连接属性 →「高级」→「初始化命令」里是否写了
SET NAMES utf8mb4;(必须带分号) - 字段注释为空,大概率是建表时用了
COMMENT ''或COMMENT NULL,MySQL 实际存的是空字符串而非 NULL,information_schema里该字段就是空;用SHOW CREATE TABLE核对原始 DDL - PDF 导出时勾选「嵌入字体」并选中支持中文的字体(如 Noto Sans CJK),否则 Windows 系统下默认用 SimSun,Mac 下可能直接 fallback 到 Helvetica
想自动同步字典更新到 Confluence 或 Notion,但 Navicat 不支持 Webhook?
Navicat 模型工具本身没有 API 或导出后钩子,所谓「自动同步」只能靠外部触发。它的导出动作本质是调用内部 SQL 查询 + 模板渲染,导出文件路径固定(%AppData%\Roaming\Navicat\YourConnectionName\dict_export),文件名含时间戳。
实操建议:
- 用
inotifywait(Linux/macOS)或PowerShell Get-ChildItem -Recurse | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-1)}监控导出目录,检测到新 HTML 文件就调用 Confluence REST API 上传 - 避免直接解析 HTML:Navicat 导出的字典 HTML 是单页结构,但 class 名无规律(如
col-12345),优先用导出的 Excel 版本(.xlsx),用pandas.read_excel提取Table Name、Column Name、Comment三列再构造 Markdown 表格 - 注意 Navicat 16+ 对导出 Excel 启用了「样式缓存」,首次导出后改字段注释,Excel 里可能还是旧内容——需清空
%AppData%\Roaming\Navicat\YourConnectionName\export_cache
最麻烦的其实是外键关系描述:Navicat 模型里能画出连线,但导出字典时只写「FK to table.column」,不展开被引用表的字段类型和是否允许 NULL。这部分得自己写 SQL 关联 information_schema.key_column_usage 和 columns 补全,没法绕开。

















