怎样在Navicat 15中通过逆向工程生成达梦数据库ER图

轻明同学_2049

轻明同学_2049

2026-10-18

882人浏览

原创

navicat 15 连接达梦数据库需手动配置 generic jdbc 并使用 dmjdbcdriver18.jar 驱动,类名 dm.jdbc.driver.dmdriver,url 格式为 jdbc:dm://host:port/dbname?useunicode=true&characterencoding=utf-8,驱动必须置于 navicat 安装目录 drivers 子目录下,且逆向工程须勾选“include system tables”才能正确识别外键关系。

怎样在navicat 15中通过逆向工程生成达梦数据库er图

Navicat 15 连接达梦数据库前必须确认驱动版本

达梦官方 JDBC 驱动(DmJdbcDriver18.jar)与 Navicat 15 的兼容性不是开箱即用的。Navicat 15 默认只识别常见开源/商业数据库的驱动类名(如 com.mysql.cj.jdbc.Driver),而达梦 8 的标准驱动类是 dm.jdbc.driver.DmDriver,且要求 jar 包放在 Navicat 安装目录下的 drivers 子目录中(Windows 路径类似 C:\Program Files\PremiumSoft\Navicat Premium 15\drivers\)。

容易踩的坑:

  • 直接下载达梦官网“最新版”驱动(如 DmJdbcDriver20.jar)可能触发 java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter —— 因为该 jar 依赖 Java 8+ 的 JAXB,而 Navicat 内置 JRE 版本较旧;应降级使用 DmJdbcDriver18.jar
  • 把 jar 放错位置(比如放到用户目录或系统 CLASSPATH)不会生效,Navicat 只扫描自身 drivers 目录
  • 连接测试时若报 Cannot resolve symbol 'DmDriver' 或 Driver not found,基本就是驱动未加载成功,不是用户名密码问题

新建连接时必须手动填写 JDBC URL 格式

Navicat 15 的达梦连接模板缺失,无法通过下拉菜单选择“Dameng”,必须选“Generic JDBC”并手写 URL。达梦 8 的标准 JDBC URL 形式为:

jdbc:dm://<host>:<port>/<database_name>?useUnicode=true&characterEncoding=UTF-8</database_name></port></host>

关键点:

  • <host></host> 填 IP 或主机名,不能填 localhost(某些达梦服务端配置会拒绝 loopback 解析);建议用具体 IP,如 192.168.1.100
  • <port></port> 默认是 5236,但达梦安装时可自定义,务必确认服务端 dm.ini 中 PORT_NUM 值
  • <database_name></database_name> 是实例名(如 DAMENG),不是模式名(schema);填错会导致连接成功但后续逆向工程找不到表
  • URL 中不能省略 ?useUnicode=true&characterEncoding=UTF-8,否则中文字段注释、表名可能乱码,影响 ER 图文字显示

逆向工程时需勾选“包括系统表”才能获取完整外键关系

达梦数据库的外键约束信息分散在系统视图 SYSTABLES、SYSCOLUMNS、SYSFOREIGNKEYS 中,而 Navicat 的逆向工程默认只读取用户模式下的表(即 USER_TABLES 类视图),会跳过外键元数据,导致生成的 ER 图里所有连线都消失。

DrugBank 数据库
DrugBank 数据库

访问并分析来自 DrugBank 数据库的全面药物信息,包括药物属性、相互作用、靶点、通路、化学结构和药理学数据。用于药物数据、药物发现研究、药理学研究、药物-

下载

操作路径:右键连接 → Reverse Database to Model → 在弹出窗口中勾选 Include system tables(即使你只关心自己的 schema,也必须勾)。

其他关键设置:

  • Schema 下拉框要选对——达梦区分大小写,\"SYSDBA\" 和 sysdba 是不同对象;通常业务库 schema 名是小写,但建库时若用双引号定义则需严格匹配
  • 取消勾选 Load data types from database(默认已关),否则 Navicat 会尝试映射达梦特有类型(如 TEXT、LONGVARCHAR)到不兼容的 MySQL 类型,引发解析中断
  • 如果模型生成后只有空画布,检查日志输出栏是否出现 ORA-00942: table or view does not exist —— 这其实是 Navicat 错误复用了 Oracle 错误码,真实原因是没勾 Include system tables

ER 图生成后外键线不自动显示?手动刷新关联即可

即使逆向成功,Navicat 15 有时也不会自动绘制外键连线,表现为各表孤立摆放,没有连线箭头。这不是数据没读到,而是 UI 层未触发关系渲染。

解决办法很简单:

  • 在模型编辑区空白处右键 → 选择 Layout → Auto Layout,多数情况能恢复连线
  • 若仍无反应,选中任意一张表 → 按 Ctrl+U(Windows)或 Cmd+U(macOS)执行 Update Table,强制重载其约束定义
  • 更彻底的方式:导出为 .mwb 文件 → 关闭 Navicat → 重启 → 重新打开模型文件,初始化渲染更可靠

注意:达梦的外键约束必须是启用状态(ENABLE),且被引用列要有主键或唯一约束,否则 Navicat 无法识别为有效外键——这点和 MySQL 严格模式逻辑一致,但达梦建表时不显式加 ENABLE 默认是禁用的。

相关文章

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

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

下载

相关标签:

数据库 navicat

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

相关专题

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

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

2023.06.29

2705

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

2971

3

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

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

2023.09.05

967

5

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

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

2023.10.09

2607

5

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

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

2023.10.16

2627

4

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

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

2023.10.16

2873

3

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

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

2023.10.19

2421

3

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

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

2023.10.23

2613

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Revel 官方 app.conf 文档
Revel 官方 app.conf 文档

共0课时 | 0人学习

Buffalo框架新项目生成指南
Buffalo框架新项目生成指南

共0课时 | 0人学习

Buffalo框架官方文档
Buffalo框架官方文档

共0课时 | 0人学习