达梦数据库报“网络通信异常”分析解决
前言:
达梦数据库在通过程序插入具有BLOB字段的记录时(非通过SQL直接插入),报“通信异常”,通过更换达梦库驱动包解决。
问题:
在一个项目现场,在进行数据导入时,总时报“网络通信异常”:
19:08:56 ERROR - Application exception overridden by rollback exception
org.springframework.dao.DataAccessResourceFailureException: PreparedStatementCallback; SQL [INSERT INTO SCHEMA1.A(ID,REV,NAME,DEPLOYMENT_ID,BYTES,GENERATED) VALUES (?,?,?,?,?,?)]; 网络通信异常; nested exception is java.sql.SQLException: 网络通信异常at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:105)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:649)at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:870)at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:894)
...
分析解决:
1、试验一:参照网上针对“通信异常”的处理,未能解决问题
网上针对“通信异常”的处理,较多的解决方案是在数据源的配置中增加连接探测参数,但经过测试,发现并不管用:
testOnBorrow: true #是否打开获取连接前探测连接是否可用validationQuery: select 1 from dual #测试连接的sqltestWhileIdle: true
而且该问题能稳定重现,考虑倒是不是网络或数据库的问题,但该机器上同时部署有其他的应用,且都连接的同一数据库,其他应用工作正常。怀疑数据库是不是有什么问题,在一定条件下触发了“通信异常”,决定让现场替换数据库再试。
2、试验二:通过替换数据库,发现问题消除
将达梦7换为达梦6,问题消除。 说明数据库层面可能存在问题,一个数据库有问题,一个没有问题。于是决定寻找数据库层面的差异,考虑到是插入某个表时报异常,决定重点比较2个库中的同一名称的表是否有不同。
--DM6
CREATE TABLE "A_DB"."SCHEMA1"."A"(
"ID" VARCHAR(64),
"REV" INTEGER,
"NAME" VARCHAR(255),
"DEPLOYMENT_ID" VARCHAR(64),
"BYTES" BLOB(2147483647),
"GENERATED" NUMBER(20,0),
PRIMARY KEY("ID"),
CONSTRAINT "A_DEPL" FOREIGN KEY("DEPLOYMENT_ID") REFERENCES "B"("ID"))STORAGE( INITIAL 1 , NEXT 1 , MINEXTENTS 1 , on "PRIMARY", FILLFACTOR 0 ) ;--DM7
CREATE TABLE "SCHEMA1"."A"
(
"ID" VARCHAR2(64),
"REV" INTEGER,
"NAME" VARCHAR2(255),
"DEPLOYMENT_ID" VARCHAR2(64),
"BYTES" BLOB,
"GENERATED" NUMBER,
CONSTRAINT "A_DEPL" FOREIGN KEY("ID") REFERENCES "SCHEMA1"."B"("ID")) STORAGE(ON "SCHEMA1", CLUSTERBTR) ;
COMMENT ON COLUMN "SCHEMA1"."A"."BYTES" IS '字节流';
COMMENT ON COLUMN "SCHEMA1"."A"."DEPLOYMENT_ID" IS '流程部署ID';
COMMENT ON COLUMN "SCHEMA1"."A"."GENERATED" IS '是否引擎生成';
COMMENT ON COLUMN "SCHEMA1"."A"."ID" IS '唯一标识';
COMMENT ON COLUMN "SCHEMA1"."PT_WF_GE_BYTEARRAY"."NAME" IS '名称';
COMMENT ON COLUMN "SCHEMA1"."PT_WF_GE_BYTEARRAY"."REV" IS '版本修订';
通过比较2个表的SQL,发现一个库中的表错误地使用主键ID字段作为外键,与另一表进行关联,那么A表的插入必然依赖于B表,若B表无此ID,则A表插入将因违反约束而失败。
但修改后问题依旧。
3、试验三:使用单独的SQL插入数据库
INSERT INTO SCHEMA1.A(ID,REV,NAME,DEPLOYMENT_ID,BYTES,GENERATED)
VALUES ('TEST001',1,'测试','dep001',0x0000FFFF0A000110,0);
可以成功。
4、试验四:更换数据库驱动包
将应用包中达梦的数据库驱动包更换为最新版本,问题解决。推测,现有的驱动包可能存在什么缺陷,在处理含BLOB字段记录的插入时可能存在处理不足。有点遗憾的是,因为JDBC包较为复杂,没有足够的时间去找到真正的问题点。
达梦数据库报“网络通信异常”分析解决相关推荐
- 关于达梦数据库报错有歧义的列名
关于达梦数据库报错有歧义的列名 原因是:在多表查询时,查询出的结果列字段在多表中重复出现,需要使用别名.列名查询.
- 解决Java连接达梦数据库报For input string: “8“的问题
最近在搞项目国产化适配,要把公司的老项目从Oracle转到达梦数据库,公司的老项目,数据库驱动什么的都是已经准备好的,也就没有多想,直接就改数据源启动,谁知道竟然报数字转换异常,一时摸不到头绪,最后发 ...
- 达梦数据库修改字段长度_解决达梦数据库新增大字段报错问题
使用达梦数据库穿件新表后往新表中增加TEXT类型字段报错,错误信息如下: 错误号: -3243 错误消息: 第1 行附近出现错误: 表[TABLE_2]中不能同时包含聚集KEY和大字段 ------- ...
- 银河麒麟V10系统无法调用达梦数据库图形化工具的解决办法
近期,在部署及使用达梦数据库时,发现了无法调用图形化工具界面的问题,首先先确认了图形化服务是正常的,使用root用户可以正常调用图形化界面,但使用dmdba却无法调用,在经过一段时间的尝试后,终于发现 ...
- 达梦数据库报错“[警告]Error Code:-70037,字符串不完整”
[问题描述]: 使用管理工具或dexp导出数据的时候报"[警告]Error Code:-70037,字符串不完整",导致表的数据没有导出或者导出的数据不完整.如下图所示: [问题解 ...
- 达梦数据库报错有歧义的列名
在多表查询时,查询出的结果列字段在多表中重复出现,需要使用别名.列名查询. 特殊情况是,重复字段出现在${ew.customSqlSegment}里面,导致无法更改,这时可以修改from后表使其不包含 ...
- Liquibase集成达梦数据库、Activiti集成达梦数据库
Liquibase集成达梦数据库 一.Liquibase适配达梦数据库 Jhipster项目下,Liquibase集成达梦数据库会报一系列错误,例如: 类型不支持.数据库字段使用到了保留字.主键自增等 ...
- MySQL适配达梦数据库注意事项
问题说明:达梦数据库jdbc驱动无法下载 问题说明:达梦数据库jdbc驱动版本 问题说明:hibernate方言驱动 问题说明:达梦不支持mysql默认时间函数 问题说明:达梦数据库不支持LAST_I ...
- 达梦数据库 网络通信异常 6001
**达梦数据库 网络通信异常 6001 网络连接错误 ** 解决方案: 1:查看用户名密码是否正确 达梦数据库默认用户名和密码是大写的SYSDBA/SYSDBA 用户修改密码后,密码中有特殊字符,比如 ...
最新文章
- GDCM:gdcm::Parser的测试程序
- 【知识小课堂】 mongodb 之字段中的【 数组】、【内嵌文档】
- 关于DNS区域查询,DNS字典爆破,以及查询文件问题
- php命令执行无法重定向输出,php – CodeIgniter 3重定向功能无法正常工作
- continue 与break 的区别
- zen3架构_AMD YES! Zen3架构亮相,消费者CPU市场的竞争热闹了
- IntelliJ IDEA 导入新项目以后的简单配置
- Maven分布式工程-分页查询(一)
- 非堵塞socket实现android手机与PC的文件传输
- Android使用局域网打印机生成打印任务
- delphi删除文本内容_文本编辑器EmEditor快捷键指令
- 祝福老婆今晚不要太生气
- ubuntu18.04上使用7z分卷压缩和解压
- ITUNE清理“其他”的内容
- springboot和redis处理页面缓存
- Java语法基本概念
- 【华人学者风采】查正军 中国科学技术大学
- HUAWEI 中级网络工程师
- ASP.NET动态网站课程设计——个人网页
- Flink1.11 intervalJoin watermark生成,状态清理机制源码理解Demo分析