针对 PGPool II 的 Java 查询导致“未命名的预准备语句不存在”错误

2024-03-09

我有一个使用 Postgres 数据库的 Java 应用程序,我正在尝试引入 PGPool 来扩展我的数据库。我遇到了一个问题,Postgres 抛出以下错误:unnamed prepared statement does not exist。在 Postgres 上启动日志记录后,我看到我的应用程序执行的每个 select 语句都会发生以下情况:

EDTLOG:  00000: duration: 7.585 ms  parse <unnamed>: "my select statement here"
EDTLOG:  00000: duration: 0.088 ms  bind <unnamed>: "my select statement here"
EDTLOG:  00000: duration: 79.014 ms  execute <unnamed>: "my select statement here"

但有时,在解析/绑定/执行步骤之间,PGPool 会执行一些额外的查询,因此日志如下所示:

EDTLOG:  00000: duration: 7.585 ms  parse <unnamed>: "my select statement here"
EDTLOG:  00000: duration: 0.088 ms  bind <unnamed>: "my select statement here"
EDTLOG:  00000: duration: 0.328 ms  statement: SELECT count(*) FROM pg_class AS c, pg_namespace AS n WHERE c.relname = 'my_table' AND c.relnamespace = n.oid AND n.nspname = 'pg_catalog'
EDTLOG:  00000: duration: 79.014 ms  execute <unnamed>: "my select statement here"
EDTERROR:  26000: unnamed prepared statement does not exist
EDTLOG:  00000: duration: 0.022 ms  parse S_2: ROLLBACK
EDTLOG:  00000: duration: 0.005 ms  bind S_2: ROLLBACK
EDTLOG:  00000: duration: 0.008 ms  execute S_2: ROLLBACK

据我了解,因为该查询是未命名的,所以如果在执行未命名查询之前该数据库会话期间出现另一个查询,它就会被 Postgres 丢弃。因此,由于 PGPool 有时会在解析/绑定/执行步骤之间发出这些额外的查询,因此会导致查询被丢弃。

我的第一个想法是,也许我的 Java 应用程序不需要为每个查询发送解析/绑定/执行语句。但从 JDBC 版本 3 和 Postgres 7.4 开始,这似乎是 Postgres JDBC 驱动程序的默认行为http://jdbc.postgresql.org/documentation/head/server-prepare.html http://jdbc.postgresql.org/documentation/head/server-prepare.html。我想我可以尝试完全禁用服务器端准备好的语句,但文档没有指定如何执行此操作,而且我不确定这是否是我想要做的事情。

我的第二个想法是让 PGPool II 停止发送这些元数据查询。因为我只是尝试使用 PGPool 作为负载均衡器,所以我真的不明白为什么它需要了解我的表元数据的所有信息。我在 PGPool 源代码的 is_system_catalog 方法中找到了执行这些查询的代码:https://github.com/iakio/pgpool-II/blob/master/pool_select_walker.c#L256 https://github.com/iakio/pgpool-II/blob/master/pool_select_walker.c#L256似乎 PGPool 出于某种原因想要了解我的表关系,不幸的是我没有看到任何方法来禁用该行为。

任何有关如何解决此问题的见解将不胜感激。

有关我的环境的一些信息:

JDBC Driver: postgresql-9.1-901.jdbc4.jar
Java version "1.6.0_31"
Spring 3.1 managed JPA 
Hibernate 3.5
Postgres 9.1

UPDATE:我找到了解决该问题的方法。放置protocolVersion=2在 JDBC URL 中,它基本上告诉 Postgres JDBC 驱动程序不要使用服务器端准备好的语句。这允许我的应用程序在我的数据库前使用 PGPool II 时运行。不过,我必须退回到 JDBC 版本 2 协议才能使用 PGPool,这一事实令我感到困扰。


我找到了解决该问题的方法。通过将 protocolVersion=2 放在 JDBC URL 中,它基本上告诉 Postgres JDBC 驱动程序不要使用服务器端准备好的语句。这允许我的应用程序在我的数据库前使用 PGPool II 时运行。不过,我必须退回到 JDBC 版本 2 协议才能使用 PGPool,这一事实令我感到困扰。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

针对 PGPool II 的 Java 查询导致“未命名的预准备语句不存在”错误 的相关文章

  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • Postgres JSON 数据类型 Rails 查询

    我正在使用 Postgres 的 json 数据类型 但想要使用嵌套在 json 中的数据进行查询 排序 我想在 json 数据类型上使用 where 进行订购或查询 例如 我想查询关注者数量 gt 500 的用户 或者我想按关注者或关注数
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • pg_dump 与 pg_dumpall?使用哪一个来进行数据库备份?

    I tried pg dump然后在另一台机器上我尝试导入 sql 并填充数据库 我看到 CREATE TABLE ERROR role prod does not exist CREATE TABLE ERROR role prod do
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • Hibernate + MySQL + rewriteBatchedStatements=true

    我有以下 Hibernate 配置

随机推荐

  • 单击按钮后克隆整个表单元素

    我有以下表格
  • 没有.net库的图像裁剪C#

    谁能建议如何裁剪图像 例如 jpeg 而不使用任何 NET 框架结构 仅使用原始字节 因为这是 Silverlight 中唯一 的方法 或者指向一个图书馆 我不关心渲染 我想在上传之前操作 jpg Silverlight 中没有可用的 GD
  • 无法链接到 XCode9 中的插座集合

    我有一些在动画期间随机播放的限制 升级到 XCode9 后 我尝试进行一些调整 编辑器似乎不再允许我向约束集合 IBOutlet 添加约束 我什至创建了一个新项目并尝试制作一个简单的插座系列 但遇到了同样的问题 这是我正在谈论的内容的简短视
  • 删除 PayPal Express Checkout 中的送货地址选项

    我用的是JSscript https developer paypal com docs integration direct express checkout integration jsv4 basic integration 贝宝推荐
  • Google 可以使用邮政信箱自动填写地址表单吗?

    我正在购物车中的结账表单上使用 地点 自动完成功能 参见示例 https developers google com maps documentation javascript examples places autocomplete ad
  • 在Python中使用队列进行线程处理

    我想在 python 中使用线程来下载大量网页 并浏览了以下在其中一个网站中使用队列的代码 它放置了一个无限的 while 循环 每个线程是否连续运行 直到所有线程都完成为止 我是不是错过了什么 usr bin env python imp
  • mongo集合中的数据碎片

    我在一个 mongo 集合中有很多更新 并假设此后文件系统上存在巨大碎片 我主要担心的是 集合将在文件系统上不断增长 而集合 中的数据却没有有价值的增长 您能否证实或反驳我的担忧 这取决于您要进行哪种更新 如果这些更新增加了您的文档 数组推
  • 对于同一 .NET 库的不同目标框架构建,程序集 GUID 属性是否应该有所不同?

    我正在用 C 开发一个 NET 库 它必须解决一系列广泛的目标框架 我想生成一个 nuget 包 它可以根据目标项目的设置正确安装 为了实现这一目标 我使用多个 csproj 文件 它们中的每一个都针对特定的目标框架 例如 MyLibrar
  • 程序集未加载 C#

    我有一个项目Common其中包含一个 log4net CustomAppender 我在所有其他项目中引用该项目并在中配置 log4net 附加程序app config 一切都很顺利 除了一个项目在尝试实例化 Appender 时失败了 输
  • 如何在java中更新文本文件的某些部分

    我希望能够更新文本文件中的某一行 但我收到错误 无法删除该文件 为什么会收到此错误 public class Main public static void main String args Main rlf new Main rlf re
  • Pandas GroupBy 和计算 Z 分数 [重复]

    这个问题在这里已经有答案了 所以我有一个如下所示的数据框 pd DataFrame 1 10 14 1 12 14 1 20 12 1 25 12 2 18 12 2 30 14 2 4 12 2 10 14 columns A B C A
  • 如何在 Pygame 中显示精灵?

    这只是一个关于 PyGame 中精灵的简单问题 我按照下面的代码加载了图像 我只是想知道如何在 PyGame 中显示精灵 例如绘制矩形或圆形 无论如何 我不想让它表现得如此 我想我用一个blit命令 但我不确定并且我在网上没有找到太多信息
  • 多线程环境登录并测试

    请让我知道您在以下场景中如何设计日志记录以及如何测试日志记录的建议 我有一个可以由多个线程调用的 API 单个线程对该 API 的一次调用会生成 50 KB 的日志 是否存在用于在多线程环境中进行日志记录的设计模式 IE所有线程使用一个日志
  • 如何在 Kotlin 中手动将字节分配给 long?

    我正在尝试做这样的事情Kotlin val top Long 1000000 1000000 1000000 1000000 1000000 1000000 1000000 In Java它看起来像这样 long TOP 1000000 1
  • lambda 函数比委托/匿名函数更快吗?

    我以为lambda functions delegates and anonymous functions具有相同的主体将具有相同的 速度 但是 运行以下简单的程序 static void Main string args List
  • 用于捕获 MSWord 文档事件的 IAdviseSink 设置

    这是我尝试设置的代码IAdviseSink在我的接口中实现的TForm1用于捕获新创建的 MSWord 文档的一些事件的类 代码运行时没有任何错误 但在保存文档或关闭文档时无法捕获任何事件 如何设置IAdviseSinkMSWord 文档正
  • 如何删除 Google 地图 v2 中的标记?

    我使用以下方法在地图上添加了标记 并保留了标记记录 public static void showallLocations ArrayList
  • 如何在 Angular 2 中触发 ajax 请求?

    我在 Angular 2 中定义了这样的服务 import Inject from angular2 angular2 import Http Headers HTTP PROVIDERS from angular2 http export
  • 为什么docker容器内存使用不减少?

    我正在运行 Java REST 应用程序Apache JavaSpark http sparkjava com 在此容器中 但我注意到每个请求都会增加内存使用量 并且在请求完成后不会减少内存使用量 我的第一个猜测是我忘记关闭一些流 缓冲区
  • 针对 PGPool II 的 Java 查询导致“未命名的预准备语句不存在”错误

    我有一个使用 Postgres 数据库的 Java 应用程序 我正在尝试引入 PGPool 来扩展我的数据库 我遇到了一个问题 Postgres 抛出以下错误 unnamed prepared statement does not exis