Navicat 16 默认不导出视图定义,必须手动勾选“Views”才能生成CREATE VIEW语句;否则SQL文件中无任何视图内容,且因缺少SHOW VIEW权限可能导致静默失败。
navicat 16 默认不导出视图定义,必须手动勾选 views 才能生成 create view 语句。 否则导出的 sql 文件里只有表结构和数据,show create view 会报错“table doesn't exist”——不是导入失败,是压根没导出来。
导出时没勾 Views,结果文件里真没有 CREATE VIEW
这是最常见误判点:用户看到导出成功、SQL 文件里有大量 CREATE TABLE,就默认视图也进了。但实际只要没在对象选择界面勾上 Views,Navicat 就完全跳过视图元信息,连 CREATE VIEW 的影子都不会出现。
- 导出路径:右键数据库 → “转储 SQL 文件” → 进入向导后,在“对象选择”页明确看到带复选框的
Views列表 - 若该列表为空,说明当前连接用户缺少
SHOW VIEW权限,需先授权:GRANT SHOW VIEW ON `db_name`.* TO 'user'@'%'; - 即使只导结构(
--no-data类似效果),也必须勾 Views;否则 Navicat 不会读取INFORMATION_SCHEMA.VIEWS
用“导出 DDL”单独导视图更可控
如果只需要视图脚本,不混表结构和数据,“导出 DDL”比“转储 SQL 文件”更直接,且不依赖全局权限设置。
- 操作路径:展开“视图”节点 → 右键单个视图 → “导出 DDL”
- 它会直接生成形如
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `v_user_info` AS SELECT ...的完整语句 - 注意
DEFINER字段可能引发导入失败(尤其跨环境),可手动删掉整段DEFINER=...,或替换为当前用户 - 不支持批量导出多个视图的 DDL,一次只能选一个
备份界面提取 SQL 是唯一支持批量+过滤的方案
当需要导出几十个视图中的一部分,又不想手动生成每个 DDL,“备份 → 提取 SQL 文件”是 Navicat 16 唯一可行的批量过滤方式。
- 操作路径:右键数据库 → “备份” → 在“对象选择”里只勾
Views→ 勾选具体视图名 → 完成备份 → 在备份列表右键 → “提取 SQL 文件” - 提取时还能二次筛选:点击“对象选择”,取消勾选不需要的视图,避免全量导出再删减
- 提取出的 SQL 包含
CREATE VIEW和DROP VIEW IF EXISTS,可直接用于迁移或版本管理 - 但注意:提取过程依赖备份任务临时生成的元数据,若备份中途失败,提取会报错“备份文件损坏”
真正容易被忽略的是权限链路:能看到视图列表 ≠ 能读取视图定义。哪怕 SELECT * FROM information_schema.views 能查到记录,SHOW CREATE VIEW 或导出 DDL 仍可能因缺失 SHOW VIEW 权限而静默失败——此时 Navicat 不报错,只留空输出。


















