最可靠的方式是执行 SHOW CREATE TABLE 语句:新建查询窗口运行 SHOW CREATE TABLE your_database.your_table;,结果中“Create Table”列即为服务端生成的完整、可执行建表SQL,含 ENGINE、字符集、COLLATE、COMMENT、索引及外键,零失真且自动转义。
navicat 里导出完整建表 sql(含 engine、字符集、注释、索引、外键等)最可靠的方式是直接调用 mysql 服务端原生命令,而不是依赖图形界面“生成”的近似语句。图形操作虽快,但容易漏掉 collate、fulltext 索引或 comment 的转义细节。
右键单表 → “复制为 SQL” → “CREATE”
这是日常调试最快的方法,适合单表快速取 DDL:
- 必须右键点击具体某张表(不是数据库或“表”节点),否则选项不出现
- 菜单路径:右键表名 →
复制为 SQL→CREATE(不是INSERT或ALTER) - 结果直接进剪贴板,粘贴即可用;包含
ENGINE=InnoDB、DEFAULT CHARSET=utf8mb4、COLLATE=utf8mb4_unicode_ci、字段COMMENT和所有KEY定义 - ⚠️ 坑:若表名含数字开头(如
2024_log),Navicat 会自动加反引号,但某些旧版 MySQL 客户端可能对反引号解析异常,建议手动验证
执行 SHOW CREATE TABLE 查询
这是唯一 100% 权威的来源,DDL 完全由 MySQL 服务端生成,零中间层失真:
- 新建查询窗口,运行:
SHOW CREATE TABLE `your_database`.`your_table`;
- 结果返回两列:
Table和Create Table,后者就是可执行的完整建表语句 - 字段名、表名、注释中的单引号、换行符全部已正确转义,无需二次处理
- ✅ 适用自动化:脚本中拼接
INFORMATION_SCHEMA可批量生成多张表的SHOW CREATE TABLE语句 - ⚠️ 坑:需要
SELECT权限,且对视图/临时表不生效;若连接用户无权限查INFORMATION_SCHEMA,该语句也会报错
右键数据库 → “转储 SQL 文件” → “仅结构”
适合批量导出整个库或选中的多张表,生成标准 .sql 文件用于版本管理:
- 右键目标数据库 →
转储SQL文件→ 选择仅结构(Structure Only) - 点“高级”,务必勾选:
添加DROP TABLE语句、导出注释、导出索引、导出外键 - 支持 Ctrl 多选表后右键 → 同样触发“转储SQL文件”,但只作用于所选表
- 生成的 SQL 文件每张表前有注释分隔(
-- ----------------------------),方便人工阅读 - ⚠️ 坑:默认不导出
COLLATE子句(尤其在低版本 Navicat 中),需确认导出内容是否含COLLATE=utf8mb4_*;若缺失,应优先改用SHOW CREATE TABLE
真正影响迁移成败的,往往不是主键或字段类型,而是字符集和排序规则的隐式继承、索引命名冲突、以及注释里的中文编码。别只看语句能不能执行,要打开导出的 .sql 文件,逐行核对 DEFAULT CHARSET 和 COLLATE 是否与源库一致——这点在跨版本或跨平台迁移时最容易被忽略。











