免费工具
MySQL 和 MariaDB 转 ER 图
粘贴 mysqldump 文件或 MySQL Workbench 脚本,反引号、ENGINE 选项和版本注释都可以保留,即可得到表和外键的 ER 图。MariaDB 的转储也按同样方式读取。试试包含商品、规格、订单和评价的电商店面示例。
示例输出
使用方法
粘贴或拖入 MySQL 转储
mysqldump 或 mariadb-dump 的输出、从 Workbench 或 phpMyAdmin 导出的内容,或 SHOW CREATE TABLE 打印出的 CREATE TABLE 文本都可以。
查看表及其关联
每张表会变成一张带有列和键的卡片。无论外键是声明为约束,还是用 REFERENCES 内联写出,都会成为对应列之间的连线。
在 Archboard 中打开
保存为新图表后,可以重新排列、添加注释、分享链接,或导出为 SVG 和 PNG。注册只需 Google 或 GitHub 账号。
从 MySQL 导出数据库结构
运行以下命令,然后粘贴 schema.sql 或拖入该文件:
--no-data 不导出数据行,--skip-comments 和 --compact 会去掉开头的注释以及 DROP TABLE、LOCK TABLES、SET NAMES 行。把 mydb 换成数据库名,需要时加上 -u 和 -p。在 MariaDB 中,mariadb-dump 接受相同的选项。
mysqldump --no-data --skip-comments --compact mydb > schema.sql
转储中的 MySQL 语法
mysqldump 文件中各语法结构的处理方式:
`order_items`- 会读取。反引号中的名称与不加反引号的同名名称视为相同;如果转储设置了 ANSI_QUOTES,双引号中的名称也能识别。
ENGINE=InnoDB- 与 DEFAULT CHARSET、COLLATE 等其他表选项一起跳过;表本身会被读取。
AUTO_INCREMENT- 不显示:列保留自己的类型,例如 INT UNSIGNED。写在表定义之后的 AUTO_INCREMENT 计数值也会被忽略。
REFERENCES products (id)- 画成关系。MySQL 9.0 之前的版本接受这种内联写法但不会执行,因此预览发现时会附上提示。
KEY idx_name (name)- 普通索引,不添加标记。UNIQUE KEY 标为 UK;紧跟在列定义后的 KEY 与 MySQL 中的含义相同,表示主键。
/*!40101 … */- 视为注释并跳过,mysqldump 在每张表前后写入的 SET 行也在其中。
DELIMITER ;;- 能够识别:DELIMITER 行之间的存储过程和函数会整体跳过并计数,其后的表仍会被读取。mysqldump 写在其中的触发器和事件包在版本注释里,因此会作为注释跳过。
ENUM (…) · SET (…)- 列类型显示为 enum 和 set;不会列出可选值。
MySQL 图表不包含的内容
- 存储过程、函数、触发器和事件,都不会被绘制。预览会为存储过程和函数计数;mysqldump 写在版本注释中的触发器和事件则作为注释跳过。
- /*!50100 PARTITION BY … */ 这类版本注释中的内容。这部分文本按注释处理,因此分区等与版本相关的选项不会显示。
- 扩展 INSERT 语句中的行。即使一行 INSERT 有几 MB,也会直接跳过、不被读取。
- 运行中的 MySQL 或 MariaDB 服务器上的任何信息。不会建立连接,因此不显示行数、表大小和服务器设置。
MySQL 和 MariaDB 常见问题
哪个 mysqldump 命令最合适?
mysqldump --no-data --skip-comments --compact mydb > schema.sql 只输出 CREATE TABLE 语句,不含数据行,也不含包在外面的那些行。完整转储也可以:INSERT 语句会被跳过,因此图表相同,只是文件更大。
支持 MariaDB 吗?
支持。MariaDB 写出的转储格式相同,选择 MySQL / MariaDB 或交给自动识别即可。mariadb-dump 的输出、反引号名称和 AUTO_INCREMENT 的读取方式与 MySQL 相同;无论文件由哪个服务器生成,内联的 REFERENCES 都会画成关系。
为什么内联 REFERENCES 会附带提示?
在 MySQL 8 及更早版本中,紧跟在列后写的 REFERENCES 会被接受但被忽略,不会创建外键;MySQL 9.0 及之后的版本会创建它。由于脚本声明了这个关系,图表在两种情况下都会画出它,提示则是提醒你检查数据库中是否真的有这个键。
可以粘贴 Workbench 脚本或迁移文件来代替转储吗?
可以。MySQL Workbench 正向工程生成的脚本、Laravel 的模式转储、Rails 的 structure.sql,或手写的 DDL 都可以。ALTER TABLE … ADD CONSTRAINT … FOREIGN KEY、ADD COLUMN 这类之后修改表的语句,会应用到它们指定的表上。
粘贴 MySQL 转储时会保存什么吗?
预览不会被保存。选择“在 Archboard 中打开”后,绘制出的图表,包括表卡片、列名和类型以及关系连线,会作为新图表保存到你的工作区中。之后对 MySQL 模式的修改不会更新它。
MySQL ER 图工具免费吗?
是的。粘贴转储和查看图表无需账号。在 Archboard 中打开图表需要一个免费账号。