2016-11-16 95 views
2

我有一个启用了memcache的pgpool 3.5.4,我用它连接到 Redshift。问题与pgpool 3.5.4和JDBC

我写了两个简单的程序,一个用Java(JDBC PostgreSQL相关9.4.1212.jre6.jar)和(使用psycopg2 Postgres的包),只是连接到pgpool另一个在Python,并执行一个简单的查询 (例如:select * from customer limit 10;)并且我注意到了不同的行为。我还使用psql命令行工具 运行了查询。

1)使用JDBC与缓存pgpool使我得到一个错误

2016年11月15日10时56分27秒:PID 31043:FATAL:后端抛出一个错误消息

2016-11- 15 10时56分27秒:PID 31043:详细信息:从后端退出,因为 错误本届

二零一六年十一月十五日10时56分27秒:PID 31043:提示:后端错误:“门户 “pgpool31043” 不存在“

2)Usi NG JDBC与缓存pgpool禁用它的工作原理

3)使用psycopg2或psql的命令行与pgpool与缓存启用或禁用 它的工作原理

有人可以帮助我了解为什么只有JDBC不工作?

回答

3

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

pgpool II然而,扩展查询协议不能很好地工作。

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

我测试了这个设置,目前为止有两个客户,在postgres和redshift前使用pgpool,并且它工作得很完美。

+0

谢谢,这节省了我们很大的麻烦! –

+0

太棒了,谢谢。 – duffn