mysql workbench可视化建模需先建.mwb模型文件并手动添加diagram才能绘表;外键须在关系向导中显式配置列与on delete/update行为;forward engineer前须设utf8mb4字符集与innodb引擎。

直接用 MySQL Workbench 做可视化建模,核心就两点:模型文件(.mwb)必须先建好,再画图;所有表和关系最终都要通过 Forward Engineer 才能落地到真实数据库——不执行这一步,画得再漂亮也只存在本地文件里。
新建模型文件后必须手动添加 Diagram 才能开始画表
很多人点完 File > New Model 就以为可以拖表了,结果画布空白、工具栏灰掉。这是因为 Workbench 的建模是“模型 → 图表 → 表”三级结构,Diagram 是中间必需容器。
- 右键模型树中的
Physical Schemas,选Add Diagram(不是右键画布) - 或者点击顶部菜单
Model > Add Diagram,生成一个带编号的空图表(如diagram_1) - 只有进入这个 Diagram 视图后,“Place a New Table” 工具图标才可用,双击画布也能弹出新建表对话框
- 漏掉这步会导致后续所有操作无响应,且错误提示极其隐晦(比如状态栏显示 “No diagram selected” 却不报错)
外键关系不能靠“连线条”自动创建,必须显式配置
Workbench 里拖拽两个表之间画线,只是视觉连线,不会自动生成外键约束。真正生效的外键,必须在关系编辑器里手动指定列、ON DELETE/UPDATE 行为,否则导出 SQL 时不会包含 FOREIGN KEY 定义。
- 用左侧工具栏的
Place a New 1:n Relationship点击父表再点子表,触发关系向导 - 在弹出窗口中,必须分别从下拉菜单选择“Parent table column”和“Child table column”,不能只填名称
-
ON DELETE CASCADE这类行为默认是RESTRICT,不改就不会级联,容易导致删除失败或数据残留 - 如果表已存在但没定义主键,关系向导会直接禁用,需先回表编辑器勾选
PK列
Forward Engineer 导出前务必检查字符集与引擎设置
Workbench 默认生成的 DDL 很可能用 utf8 和 MyISAM,而现代 MySQL(尤其是 8.0+)要求 utf8mb4 和 InnoDB 才能支持 emoji 和事务。这些参数不在图形界面里调,得进导出向导高级选项。
- 执行
Database > Forward Engineer后,在第三步 “Review Options” 页面点Advanced Options… - 把
Default collation改成utf8mb4_0900_ai_ci(MySQL 8.0)或utf8mb4_general_ci(5.7) - 勾选
Generate DROP … IF EXISTS,避免重复执行报错 - 取消勾选
Generate INSERT statements for tables,除非你真要初始化测试数据 - 最后一步预览 SQL 时,快速扫一眼每张表的
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4是否出现,缺一不可
真正麻烦的从来不是画图本身,而是模型和生产库之间的语义对齐:比如图形里设了 UQ(唯一),但导出 SQL 没生成 UNIQUE KEY;或者关系线画了,但忘记在子表字段上勾 F(Foreign Key)标识——这些细节 Workbench 不会主动校验,全靠人工盯预览 SQL。











