PGPool'SHOW pool_nodes'在jdbc上返回'ERROR:无法识别的配置参数“pool_nodes”'

时间:2014-11-17 02:46:21

标签: java postgresql jdbc pgpool

我已经使用PGpool成功配置了我们的应用程序,我必须说,它非常棒。我试图在我们的应用程序中公开有关PGPool集群的信息,并且我在使用postgres驱动程序对JDBC使用'SHOW'命令时遇到问题。

驱动:

postgresql-9.3-1101-jdbc41.jar

当我尝试执行查询“SHOW pool_nodes”时,我收到此错误:

ERROR: unrecognized configuration parameter "pool_nodes"

我很确定我已经连接到pgpool而不是postgres,因为故障转移效果很好。我的猜测是postgres司机正在进行一些检查。有没有人建议在我的java应用程序中保存这些数据?

1 个答案:

答案 0 :(得分:0)

这不是从show命令获取结果的方法,因此我使用了pgadmin并添加了一些PHP代码来获取它。

首先,您必须安装pgadmin并将getNodeInfo.php添加到该文件夹​​中,并添加getNodeInfo.php代码:

<?php

/**
* The status value can refrence:
* http://www.pgpool.net/docs/latest/en/html/pcp-node-info.html
* 
* Status is represented by a digit from [0 to 3].
* 
* 0 - This state is only used during the initialization. PCP will never display it.
* 
* 1 - Node is up. No connections yet.
* 
* 2 - Node is up. Connections are pooled.
* 
* 3 - Node is down.
*/

require_once('common.php');
require_once('command.php');

$_SESSION[SESSION_LOGIN_USER]          = "your_pgadmin_account";
$_SESSION[SESSION_LOGIN_USER_PASSWORD] = "your_pgadmin_password";

$nodeCount = getNodeCount();

$nodeInfo = array();

for($i = 0;$i < $nodeCount; $i++){
    $nodeInfo[$i] = getNodeInfo($i);
}

echo json_encode($nodeInfo);

exit();


如果您的pgadmin可以正常工作,则可以致电http://localhost/getNodeInfo.php以获取类似信息

[
  {
    "hostname": "host1 ip",
    "port": "5432",
    "status": "2",
    "weight": "0.500"
  },
  {
    "hostname": "host2 ip",
    "port": "5432",
    "status": "2",
    "weight": "0.500"
  }
]

如果状态== 3,则表明主机已关闭。