Fel*_*cia 2 postgresql jdbc pgpool
我有一个启用了内存缓存的 pgpool 3.5.4,我用它连接到 Redshift。
我写了两个简单的程序,一个用 Java(JDBC postgresql-9.4.1212.jre6.jar)和另一个用 Python(使用 psycopg2 postgres 包)连接到 pgpool,并执行一个简单的查询(例如:select * from customer限制为 10;) 我注意到了奇怪和不同的行为。我还使用命令行工具 psql 运行了查询。
1) 在启用缓存的情况下将 JDBC 与 pgpool 一起使用我收到一个错误
2016-11-15 10:56:27:pid 31043:致命:后端抛出错误消息
2016-11-15 10:56:27:pid 31043:详细信息:由于后端错误而退出当前会话
2016-11-15 10:56:27:pid 31043:提示:后端错误:“门户“pgpool31043”不存在”
2)在禁用缓存的情况下将 JDBC 与 pgpool 一起使用它可以工作
3) 在 pgpool 中使用 psycopg2 或 psql 命令行并启用或禁用缓存,它可以工作
有人能帮我理解为什么只有 JDBC 不起作用吗?
JDBC 使用两种协议进行通信,简单查询协议和扩展查询协议。
然而,pgpool II 不能很好地与扩展查询协议配合使用。
在 github 中 pgjdbc 驱动程序的文档中(https://github.com/pgjdbc/pgjdbc )有一个名为 preferredQueryMode 的参数。要解决此问题,只需将 preferredQueryMode 设置为 simple,问题就会消失。
到目前为止,我与两个客户一起测试了这个设置,在 postgres 和 redshift 前面使用 pgpool,它运行得很好。
| 归档时间: |
|
| 查看次数: |
1115 次 |
| 最近记录: |