我们在两个环境中设置了Informix数据库。
测试
host1:1528/d7main:INFORMIXSERVER=m7uatserver戳
host2:1528/d7main:INFORMIXSERVER=m7server我试图在PROD从UAT连接中运行一个对客户表的查询。
select * from d7main@m7server:customer where active = 'Y';我不犯错误。
Attempt to connect to database server (m7server, conerr=-931, oserr=0) failed.
[SQL State=08004, DB Errorcode=-908] 写查询的方式有问题吗?或者DBA需要设置其他东西才能实现这种连接?
基于IBMInformix12.10手册中的访问远程表,语法似乎是正确的。
发布于 2018-05-18 00:11:14
finderr -908的输出是:
-908尝试连接到数据库服务器(servername)失败。 程序或应用程序试图访问另一个数据库服务器,但失败了。注意当前语句中的服务器名称。 所需的数据库服务器不可用,或网络关闭或拥塞。请您的DBA和系统管理员验证服务器和网络是否可操作。如果网络拥塞,请使用环境变量INFORMIXCONTIME和INFORMIXCONRETRY来调整连接时间。有关设置这些环境变量的信息,请参阅Informix : Reference。 此消息将出现在版本6.0和更高版本中。
同样,对于错误-931,该消息意味着:
-931无法在/etc/services中找到servicename service/tcp服务。 服务服务名不在网络配置文件/etc/services (UNIX)或\etc\services (DOS)中列出。检查$INFORMIXDIR/etc/sqlhost文件,并检查所需服务器的服务名称是否正确。如果是,请与您的网络管理员联系,以了解服务未知的原因。如果您使用Informix作为NetWare,请检查客户端上的\etc\services文件以获得所需的条目。
这里有一些非常古老的参考资料-- OnLine是古代的历史,6.00版也是。然而,基本依据是相似的。
似乎在一台或两台机器上都存在网络设置问题.
AFAICS,您在同一台机器上有测试和生产服务器。它们是使用单个INFORMIXDIR,还是每个INFORMIXDIR都有自己的单独的INFORMIXDIR?(两者都是可能的;两者都是错误的。)他们是否共享INFORMIXSQLHOSTS文件?
host1和host2 --因此,两台不同的机器必然都有自己的INFORMIXDIR。我从-931消息中猜测,它们不共享INFORMIXSQLHOSTS文件(这可能意味着每个文件都有自己的INFORMIXDIR),而且每个文件中的信息不包括其他服务器。
确保如果它们没有使用相同的INFORMIXSQLHOSTS文件(即默认情况下的文件$INFORMIXDIR/etc/sqlhosts,除非被$INFORMIXSQLHOSTS环境变量覆盖),文件中的信息是等价的--或者,至少每个文件都包含对方的条目。
dbaccess -version或onstat -version应该告诉您,如果您不知道的话。)/etc/hosts文件或其网络等效信息是否包含相关信息,以便每台计算机都知道如何连接对方?如果它们位于相同的INFORMIXDIR中,并且使用相同的INFORMIXSQLHOSTS文件,那么请返回,我们将重新考虑。
https://stackoverflow.com/questions/50401024
复制相似问题