我试图使用dblink将数据从一个系统移动到另一个系统。两台机器都是RHEL 5.11
,都运行postgresql 9.2
,都在公司内部网络上,它们之间没有防火墙规则。我正在从我的桌面vpn'ed进入公司内部网络。
调用这两台机器FROM
和TO
。FROM机器安装了dblink作为扩展,而TO机器没有。对于这两台机器,我指定的用户都有一个pg_hba.conf主机条目,其中列出了all
作为数据库,0.0.0.0/0
作为地址,trust
。
使用pgadmin3
,我可以从我的桌面连接到两台机器,查看/添加/修改两台机器上的数据库。我认为这排除了琐碎的连接问题和权限作为问题的潜在来源。
在FROM
机器的pgadmin
查询窗口中,我执行以下命令:SELECT dblink_connect('AAA','host=TO dbname=XXX user=postgres password=ZZZ');
个
- 或者-
SELECT dblink_connect('host=TO dbname=XXX user=postgres password=ZZZ');
个 - 或者-
在FROM
计算机上的psql
命令行中输入上述任一变量。
导致在消息窗格中或命令行中传递此消息: - 错误:could not establish connection无法建立连接无法连接到服务器:连接超时服务器是否在主机“TO”(AAA.BBB.CCC.DDD)上运行并接受端口5432上的TCP/IP连接?
- 错误**
错误:无法建立连接SQL状态:08001
详细信息:无法连接到服务器:连接超时服务器是否运行在主机“TO”(AAA.BBB.CCC.DDD)上并接受TCP/IP
端口5432上的连接?
有什么建议?
更新--尝试将主机名“TO”替换为“localhost”,结果相同。--然而,dblink_connect('dbname_on_FROM');工作。因此基本的dblink功能正在工作。--原始问题仍未解决,因为我想将数据发送到TO机器上的服务器。
2条答案
按热度按时间lx0bsm1f1#
我不确定你是否能找出问题所在,但我还是要回答。“TO”机器的数据库可能运行在与5432不同的
port
上。你需要确保你的DB服务器运行的端口和你在“FROM”机器中指定的端口是相同的。如果端口号相同,那么在“FROM”机器中指定这些参数时,
host
、username
或password
中一定有错误。bvpmtnay2#
我也有同样的问题。
我的dblink也在同一个示例中。所以,我使用
127.0.0.1
作为我的host
。当我使用
5432
作为port
时,我得到了超时错误。因此,我使用
show port
命令获取pg主机的真实的端口。我得到的结果是3002
;当我将
dblink_connect
port
更改为3002
时,我可以连接成功;所以,如果你可以使用一个端口连接到数据库从你的后端;
并在
dblink_connect
中获得超时错误。可以,你可以尝试使用另一个端口(通过使用
show port
查询)连接数据库内部。