Navicat如何通过ER图新建数据表

梦伟酱_9213

梦伟酱_9213

2026-08-07

389人浏览

原创

er图仅为设计视图,不能直接新建物理表;必须通过“同步到数据库”功能执行ddl建表,该操作为全量覆盖(drop+create),且需手动设置外键关系并确认权限与版本兼容性。

不能直接通过 er 图新建物理表,er 图只是设计视图;必须同步(sync)到数据库才能真正建表。

Navicat 的 ER 图本身不执行 DDL

很多人误以为在 ER 图里画完表、连好外键,点个“保存”就自动生成了数据库里的表——实际上不会。Navicat 的 ER 图(无论是通过 模型 → 新建模型 还是 逆向表到模型 生成的)本质是一个独立的设计文件(.nm),和实际数据库是分离的。它只描述逻辑结构,不触发任何 CREATE TABLE 语句。

常见错误现象:
– 在 ER 图里双击新建了 users 表并设好字段,刷新数据库列表却找不到这张表
– 导出为 PNG 后以为“图有了,表就建好了”
– 右键 ER 图空白处只有“导出为图片”,没有“生成表”选项

必须用“同步到数据库”功能落地建表

真正把 ER 图变成真实表的唯一可靠路径是 文件 → 同步已选择的模式(或右键模型 → 同步到数据库)。这个操作会比对当前模型与目标库的差异,生成并执行 SQL。

  • 确保模型中所有表都已定义主键(否则同步时可能报错 Invalid primary key)
  • 目标数据库连接必须提前建立且可写(测试连接成功,用户有 CREATE 权限)
  • 同步前建议勾选 仅创建不存在的对象,避免误删已有表(尤其生产环境)
  • 同步过程中会弹出 SQL 预览窗口,务必检查生成的 CREATE TABLE 和 ALTER TABLE ADD FOREIGN KEY 是否符合预期

外键关系必须手动连线并设置参照完整性

ER 图里两个表之间光靠名字相似(比如 orders.user_id 和 users.id)不会自动识别外键。你得主动拖拽字段连线,并在弹出对话框里明确指定:

navicatmysql
navicatmysql

Navicat For MySQL

下载
  • 源字段(如 orders.user_id)
  • 目标字段(如 users.id)
  • 删除/更新规则(CASCADE / RESTRICT 等)
  • 是否启用该外键约束(默认勾选)

如果漏掉这一步,同步时只会建表,不会加 FOREIGN KEY 语句——后续查数据一致性时才发现关系断了。

同步失败的典型原因和绕过方式

同步常卡在权限或语法兼容性上:

  • ERROR 1064: You have an error in your SQL syntax:检查 Navicat 模型里选的数据库版本是否匹配目标库(比如模型设为 MySQL 5.7,但连的是 MySQL 8.0,某些关键字如 JSON 类型写法不同)
  • Access denied for user 'xxx'@'%' to database 'xxx':确认连接用户有 CREATE、REFERENCES 权限,不是只读账号
  • 想跳过外键同步?可在同步选项里取消勾选 Foreign Keys,但之后得手写 ALTER TABLE ... ADD CONSTRAINT

最稳妥的做法:先同步建表(不含外键),再单独用 表设计 → 外键 → 添加 逐步补全,每步都能看到实时 SQL 预览。

ER 图不是魔法画布,它是设计草稿;真正让表落地的,永远是那一次点击“运行查询”的同步动作。别跳过预览,也别信自动推断——外键、字符集、存储引擎这些细节,Navicat 不会替你做决定。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2725

3

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2023.08.14

3921

10

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

2023.08.31

3011

3

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.05

967

5

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

2627

5

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

2023.10.16

2647

4

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

2023.10.16

2893

3

vb连接数据库的方法
vb连接数据库的方法

vb连接数据库的方法有使用ADO对象库、使用OLEDB数据提供程序、使用ODBC数据源等。详细介绍:1、使用ADO对象库方法,ADO是一种用于访问数据库的COM组件,可以通过ADO连接数据库并执行SQL语句。可以使用ADODB.Connection对象来建立与数据库的连接,然后使用ADODB.Recordset对象来执行查询和操作数据;2、使用OLEDB数据提供程序方法等等。

2023.10.19

2461

3

mdf文件导入数据库的方法
mdf文件导入数据库的方法

mdf文件导入数据库的方法有使用SQL Server Management Studio、使用SQL Server命令行工具、使用SQL Server Integration Services等方法。想了解更多mdf文件导入数据库的方法的相关内容,可以阅读本专题下面的文章。

2023.10.23

2653

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.8万人学习