pgpool 3.5.4和JDBC

时间:2016-11-16 18:13:03

标签: postgresql jdbc pgpool

我有一个启用了memcache的pgpool 3.5.4,我用它来连接 红移。

我写了两个简单的程序,一个用Java编写(JDBC postgresql-9.4.1212.jre6.jar)和Python中的另一个(使用psycopg2 postgres包)只是连接到pgpool,并执行一个简单的查询 (例如:从客户限制10中选择*;)并且我注意到奇怪和 不同的行为。我还使用命令行工具运行查询 PSQL。

1)在启用了缓存的情况下使用JDBC和pgpool我收到错误

2016-11-15 10:56:27:pid 31043:致命:后端抛出错误信息

2016-11-15 10:56:27:pid 31043:DETAIL:退出当前会话因为 来自后端的错误

2016-11-15 10:56:27:pid 31043:提示:BACKEND错误:" portal" pgpool31043" 不存在"

2)在禁用缓存的情况下将JDBC与pgpool一起使用

3)使用psycopg2或psql命令行与pgpool进行缓存 启用或禁用它

有人可以帮助我理解为什么只有JDBC无效吗?

1 个答案:

答案 0 :(得分:4)

JDBC使用两种协议进行通信,简单查询协议和扩展查询协议。

然而,

pgpool II对扩展查询协议不起作用。

在github(https://github.com/pgjdbc/pgjdbc)中的pgjdbc驱动程序的文档中,有一个名为preferQueryMode的参数。要解决这个问题,只需将preferQueryMode设置为simple,问题就会消失。

到目前为止,我测试了两个客户的设置,在postgres和redshift前面使用pgpool,它运行得很好。