为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:windows10
【CPU】:Intel® Core™ i7-10510U CPU @ 1.80GHz 2.30 GHz
【问题描述】*:
1、dm.jdbc.driver.DMException: 网络通信异常
at dm.jdbc.driver.DBError.throwException(DBError.java:774)
at dm.jdbc.a.a.init(DBAccess.java:185)
at dm.jdbc.a.a.<init>(DBAccess.java:157)
at dm.jdbc.driver.DmdbConnection.openConnection(DmdbConnection.java:638)
at dm.jdbc.desc.EP.connect(EP.java:159)
2、connect: Address is invalid on local machine, or port is not valid on remote machine
3、使用DM管理工具连接数据库正常
4、数据库连接地址、端口正确;
5、使用的驱动为本地安装后,driver/jdbc下的驱动包
<dependency>
<groupId>com.dameng</groupId>
<artifactId>dm-jdbc</artifactId>
<version>1.8</version>
<scope>system</scope> <systemPath>${project.basedir}/lib/DmJdbcDriver18.jar</systemPath>
</dependency>
6、数据库连接配置
type: com.alibaba.druid.pool.DruidDataSource
druid:
driverClassName: dm.jdbc.driver.DmDriver
url: jdbc:dm://ip:port
username: xx
password: xx
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,slf4j
配置贴出来看下
最后怎么解决的,我这边也是同样的错误。 不过产生的条件不一样。 我这边是有两个环境,一个是阿里云的环境,一个是政府那边的政务网环境。 然后两边都是走的VPN连接。 安装也是一样,但是阿里云的正常跑,政务网那边和您这边错误一摸一样。
非常坑的体验,搞了一下午,试了各种方法,最后发现是pom文件的dm驱动器版本的问题
无语,原因大概是因为达梦数据库有一个版本,java的达梦数据库驱动有一个版本,因此需要对应上,让人无语的是正常来讲按照惯例,版本最后面的数字表示小版本改动,也就是不应该影响正常运行就是小功能修改增加,结果之前用的192直接没法运行,79就可以了,管理工具正常连接。
国产数据库还有很长的路要走啊,版本设置这么不规范,至少用不了的直接在最前面就把版本写清楚,直接7,8,9这样排不好嘛,浪费了巨多时间
url里看看ip 端口是否填写错误