You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Informix跨服务器联表查询遇Socket连接失败问题求助

问题解答

1. 检查客户端到服务器的可达性

从三个维度逐步排查:

  • 网络连通性验证:在客户端机器的命令行执行 ping MyServer1 和 ping MyServer2,确认能收到服务器响应(部分服务器可能禁用ping,无响应需结合端口检查进一步判断)。
  • 端口可用性检查:Informix默认监听端口为9088,用以下命令验证端口是否开放:
    • 用telnet:telnet MyServer1 9088,连接成功会进入空白界面,失败则提示无法连接。
    • 用nc(netcat):nc -zv MyServer1 9088,成功会显示类似"Connection succeeded"的提示。
      若服务器使用自定义端口,需替换为实际端口号,可在Informix服务器执行 onstat -g ntt 查看当前监听端口。
  • Informix客户端配置检查:查看客户端机器的sqlhosts文件(Windows路径一般为%INFORMIXDIR%\etc,Linux为$INFORMIXDIR/etc),确认文件中包含MyServer1和MyServer2的正确配置,格式示例:
    MyServer1 onsoctcp <服务器IP> 9088
    
    DBeaver依赖该文件的配置建立跨服务器连接,配置缺失或错误会导致连接失败。

2. 是否需要在SQL中指定端口及操作方式

需要指定端口,除非已在sqlhosts文件中配置了服务器名与端口的映射,两种实现方式:

  • 方式一:SQL语句中直接指定端口
    修改SQL,在服务器名后追加端口号,格式为数据库名@服务器名:端口号:informix.表名,示例:
    SELECT      column1 
    FROM        databaseA@MyServer1:9088:informix.tableA as A
    INNER JOIN  databaseB@MyServer2:9088:informix.tableB as B on A.column1 = B.column1
    WHERE       column1 IN (10, 20)
    
    注意替换9088为服务器实际使用的端口号
  • 方式二:配置sqlhosts文件(推荐)
    在客户端的sqlhosts文件中添加服务器端口映射,配置示例:
    MyServer1 onsoctcp 192.168.1.10 9088
    MyServer2 onsoctcp 192.168.1.11 9088
    
    配置完成后重启DBeaver或刷新连接,即可按原SQL语句执行跨服务器查询。

内容的提问来源于stack exchange,提问作者Mi2830

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:52:53