PostgreSQL之IOException

PostgreSQL之IOException

PostgreSQL 是一款开源的对象关系型数据库管理系统,在使用过程中可能会遇到 IOExcption 异常,这通常是由以下原因之一导致的:

1. Sends a 2-byte integer (short) to the back end

原因:

  1. 使用SQL语言in时超过Short.MAX_VALUE最大数量时,抛出此异常,源代码如下:
  2. 第1点产生的异常会有一个关闭数据库连接的操作,导致业务后续数据库操作拿不到连接,从而抛出另一个错误Cause: java.sql.SQLException: connection holder is null

    注:在PostgreSQL数据库驱动jar的org.postgresql.core.v3.QueryExecutorImpl类中,IOExcpetion捕获后,都有一个abort();执行,方法详细代码为:pgStream.getSocket().close();

解决方案:

// 分批处理,每次In的数量1000条
// 可以用Hutool工具类来处理
CollUtil.split(list, 2000);

org.postgresql.core.PGStream;

  public void sendInteger2(int val) throws IOException {if (val < Short.MIN_VALUE || val > Short.MAX_VALUE) {throw new IOException("Tried to send an out-of-range integer as a 2-byte value: " + val);}_int2buf[0] = (byte) (val >>> 8);_int2buf[1] = (byte) val;pg_output.write(_int2buf);}

org.postgresql.core.v3.QueryExecutorImpl

try {try {handler = sendQueryPreamble(handler, flags);autosave = sendAutomaticSavepoint(query, flags);sendQuery(query, (V3ParameterList) parameters, maxRows, fetchSize, flags,handler, null);if ((flags & QueryExecutor.QUERY_EXECUTE_AS_SIMPLE) != 0) {// Sync message is not required for 'Q' execution as 'Q' ends with ReadyForQuery message// on its own} else {sendSync();}processResults(handler, flags);estimatedReceiveBufferBytes = 0;} catch (PGBindException se) {// There are three causes of this error, an// invalid total Bind message length, a// BinaryStream that cannot provide the amount// of data claimed by the length arugment, and// a BinaryStream that throws an Exception// when reading.//// We simply do not send the Execute message// so we can just continue on as if nothing// has happened. Perhaps we need to// introduce an error here to force the// caller to rollback if there is a// transaction in progress?//sendSync();processResults(handler, flags);estimatedReceiveBufferBytes = 0;handler.handleError(new PSQLException(GT.tr("Unable to bind parameter values for statement."),PSQLState.INVALID_PARAMETER_VALUE, se.getIOException()));}} catch (IOException e) {// 关闭数据库连接abort();handler.handleError(new PSQLException(GT.tr("An I/O error occurred while sending to the backend."),PSQLState.CONNECTION_FAILURE, e));}
@Override
public void abort() {try {pgStream.getSocket().close();} catch (IOException e) {// ignore}closed = true;
}

总结

遇到代码异常后不要慌(其时大多数错误都是第一次碰见),首先仔细观查日志,并根据关键字查找源代码,排查错误产生的原因

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144254.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

怒刷LeetCode的第18天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;置换 方法二&#xff1a;哈希集合 方法三&#xff1a;递归 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;双指针法 方法二&#xff1a;动态规划 方法三&#xff1a;栈 方法四&#xff1a;两…

Cannot download sources

问题 Swagger的相关包&#xff0c;没法看到注释&#xff1b;源码也下载不了&#xff0c;会报下面的错误。 解决办法是&#xff0c;通过maven&#xff0c;重新下载jar包。 报错 Cannot download sources Sources not found for: io.swagger.core.v3:swagger-annotations:2.2.…

华为云云耀云服务器L实例评测 | 实例使用教学之简单使用:通过命令行管理华为云云耀云服务器

华为云云耀云服务器L实例评测 &#xff5c; 实例使用教学之简单使用&#xff1a;通过命令行管理华为云云耀云服务器 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀云服务…

C++ | 计算几何:判断点与多边形的关系

在屏幕坐标上有一个多边形&#xff0c;给定一个点&#xff0c;判断该点和多边形的关系。 例如在下图中&#xff0c;点A位于多边形内&#xff0c;点B位于多边形外&#xff0c;点C位于多边形上。 注意: 1.屏幕坐标系中&#xff0c;x轴从左往右为正方向&#xff0c;y轴从上到下为…

微信小程序案例2-1:学生信息

文章目录 &#xff08;二&#xff09;准备图像素材&#xff08;三&#xff09;编写小程序页面结构 单击[确认] 清空页面结构文件index.wxml内容 修改页面配置文件index.json&#xff0c;不适用navigation-bar组件 删除全局配置文件app.json&#xff0c;删除渲染器配置&a…

Unity 制作登录功能02-创建和链接数据库(SQlite)

国际惯例&#xff1a;先看效果 1.SQlite是一种嵌入型数据库 在Unity开发游戏时使用SQLite有多种原因&#xff0c;以下是其中一些主要原因&#xff1a; 嵌入式数据库&#xff1a;SQLite是一个嵌入式数据库引擎&#xff0c;这意味着它不需要单独的服务器进程。这使得使用SQLite非…

提高效率!掌握项目管理工具中任务优先级的使用技巧

在项目管理中&#xff0c;我们经常会遇到一些具有强制依赖关系的任务。这些任务之间的关系是绝对的&#xff0c;并且毫无疑问必须首先完成什么。例如&#xff0c;您必须先设计一个产品&#xff0c;然后才能构建它&#xff0c;并且必须先构建它&#xff0c;然后才能绘制它。然而…

Midjourney 生成油画技巧

基本 prompt oil painting, a cute corgi dog surrounded with colorful flowers技法 Pointillism 点描绘法 笔刷比较细&#xff0c;图像更精细 oil painting, a cute corgi dog surrounded with colorful flowers, pontillismImpasto 厚涂绘法 笔刷比较粗&#xff0c;图像…

外包公司干了2个月,整个人不思进取了...

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入深圳某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年8月份&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了三年的功能测试…

【JAVA】飞机大战

代码和图片放在这个地址了&#xff1a; https://gitee.com/r77683962/fighting/tree/master 最新的代码运行&#xff0c;可以有两架飞机&#xff0c;分别通过WASD&#xff08;方向&#xff09;&#xff0c;F&#xff08;发子弹&#xff09;&#xff1b;上下左右&#xff08;控…

【记录文】Android自定义Dialog实现圆角对话框

圆角的dialog还是蛮常用的&#xff0c;demo中正好用上了 自定义Dialog&#xff0c;代码中可以设置指定大小与位置 /*** author : jiangxue* date : 2023/9/25 13:21* description :圆角的矩形*/internal class RoundCornerView(context: Context,view: Int, StyleRes theme…

通俗讲解深度学习轻量网络MobileNet-v1/v2/v3

MobileNet网络是由google团队在2017年提出的&#xff0c;专注于移动端或者嵌入式设备中的轻量级CNN网络。相比传统卷积神经网络&#xff0c;在准确率小幅降低的前提下大大减少模型参数与运算量。(相比VGG16准确率减少了0.9%&#xff0c;但模型参数只有VGG的1/32)。MobileNet网络…

HP E1740A 模拟量输入模块

HP&#xff08;惠普&#xff09;E1740A 模拟量输入模块是一种用于数据采集和测量的工控模块&#xff0c;通常用于各种自动化和监测应用中。以下是该模拟量输入模块的一些可能特点和功能&#xff1a; 多通道输入&#xff1a; E1740A 模块通常具有多个模拟量输入通道&#xff0c;…

让Pegasus天马座开发板实现超声波测距

在完成《让Pegasus天马座开发板用上OLED屏》后&#xff0c;我觉得可以把超声波测距功能也在Pegasus天马座开发板上实现。于是在箱子里找到了&#xff0c;Grove - Ultrasonic Ranger 这一超声波测传感器。 官方地址: https://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger 超声…

「大数据-2.0」安装Hadoop和部署HDFS集群

目录 一、下载Hadoop安装包 二、安装Hadoop 0. 安装Hadoop前的必要准备 1. 以root用户登录主节点虚拟机 2. 上传Hadoop安装包到主节点 3. 解压缩安装包到/export/server/目录中 4. 构建软链接 三、部署HDFS集群 0. 集群部署规划 1. 进入hadoop安装包内 2 进入etc目录下的hadoop…

深信服云桌面用户忘记密码后的处理

深信服云桌面用户忘记了密码&#xff0c;分两种情况&#xff0c;一个是忘记了登录深信服云桌面的密码&#xff0c;另外一个是忘记了进入操作系统的密码。 一、忘记了登录深信服云桌面的密码 登录虚拟桌面接入管理系统界面&#xff0c;在用户管理中选择用户后&#xff0c;点击后…

基于QGIS进行二次开发的正确姿势

前言 最近一直在琢磨QGIS的二次开发&#xff0c;也踩过不少坑&#xff0c;好在最后的结果是好的。这里介绍一下我最喜欢的二次开发姿势。 电脑环境 VS2017 Community、QGIS3.18.3、QT5.11.2、Windows SDK版本 10.0.17763.0、VS2017的QT插件版本 2.8.1 前提条件 已经下载安…

网络层五大核心知识点

引言 在前面几期文章中&#xff0c;无论是UDP还是TCP&#xff0c;其实我们都在介绍 TCP/IP 模型的“传输层”&#xff0c;我们知道&#xff0c;数据在传输层完成相应的封装后就会来到网络层进行下一步的数据转发&#xff0c;那么数据在网络层又接受了哪些神秘的力量&#xff1…

IDEA 2019 Springboot 3.1.3 运行异常

项目场景&#xff1a; 在IDEA 2019 中集成Springboot 3.1.3 框架&#xff0c;运行异常。 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

代码随想录 Day6 哈希 LeetcodeT454 四数之和II T383赎金信 T15 三数之和 T18 四数之和

本文代码思路来源于: 代码随想录 前言 希望大家在刷这部分题的时候先熟悉熟悉哈希结构的基本常用api,比较方便理解. LeetCode T454 四数之和 题目链接:454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; 题目思路 暴力解法仍然是遍历四个数组解决此题, 哈希的思路有…