最稳最快查看DDL的方式是双击表→点「属性」→切到「DDL」标签页;若未显示,可刷新或检查权限。右键「生成DDL」支持编辑选项,「导出」适合批量处理。

直接双击表 → 点击顶部「属性」→ 切到「DDL」标签页,就能看到完整的 CREATE TABLE 语句。这是最稳、最快、不依赖数据库权限的方式。
双击表后找不到 DDL 标签?
常见原因是表还没真正加载完成,或者当前视图被手动切换过。DBeaver 的「属性」面板默认只显示「列」「约束」「索引」等结构信息,DDL 标签需要主动触发加载:
- 确保已双击打开该表(不是右键菜单里的「编辑」或「查看数据」)
- 顶部标签栏必须是「属性」,不是「数据」或「ER 图」
-
DDL标签有时会延迟出现——等几秒,或点击左上角「刷新」按钮(带循环箭头的图标) - 如果仍不显示,检查连接是否处于活动状态;某些只读用户权限下,
DDL标签会被隐藏(此时需换高权限账号)
右键「生成 DDL」和「导出」的区别
这两个操作都输出 CREATE TABLE,但用途和可控性完全不同:
-
生成 DDL:右键单张表 → 选「生成 DDL」,弹出对话框,内容可复制、可编辑、支持勾选「包含 DROP 语句」「添加 IF NOT EXISTS」等选项 -
导出:右键数据库或 schema →「导出」→ 选「SQL 文件」→ 勾选「仅 DDL」,适合批量导出多张表,但无法对单表做精细调整(比如跳过某个索引) - 注意:
生成 DDL默认不包含外键引用的其他表定义,也不会自动处理跨 schema 依赖;若要迁移整套逻辑,得用「导出」+「包含依赖对象」选项
SQL 编辑器里执行 SHOW CREATE TABLE 报错?
这是 MySQL 用户最容易卡住的地方。报错如 ERROR 1064 (42000): You have an error in your SQL syntax,通常因为:
- 没在正确的数据库上下文里执行:先用
USE mydb;切库,再运行SHOW CREATE TABLE users; - 表名含特殊字符或大小写敏感:用反引号包裹,例如
SHOW CREATE TABLE `User_Log`; - PostgreSQL / SQL Server 不支持该语法:PostgreSQL 用
\d+ table_name(仅 psql CLI),DBeaver 中应走「生成 DDL」路径;SQL Server 需依赖系统视图,不如 GUI 方式可靠 - 驱动版本太老:MySQL 8.0+ 默认禁用
SHOW CREATE TABLE对某些账户的访问,升级 DBeaver 内置驱动或手动替换mysql-connector-java至 8.0.33+
DDL 生成看似简单,但不同数据库对注释、字符集、存储引擎、排序规则的还原精度差异很大;如果你打算拿 DBeaver 导出的语句直接在另一套环境执行,务必人工核对 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 这类细节——它们不会报错,但可能让后续插入中文失败或索引失效。











