Linux 下 Informix 连接失败 的原因很多,常见原因集中在 网络、端口、用户权限、环境变量、数据库状态 等方面。下面按最常见 → 较少见的顺序给你一个排查清单,并附上典型错误信息与解决方法。
现象
SQLCODE = -908
Cannot connect to database server
检查
onstat -g cfg
onstat -
解决
oninit -v
Informix 默认端口
sqlexec 9088/tcp
检查端口
netstat -tunlp | grep 9088
ss -lntp | grep 9088
确认 sqlhosts
cat $INFORMIXDIR/etc/sqlhosts
示例:
ol_informix_1210 onsoctcp 127.0.0.1 9088
⚠️ 注意:
必须设置的环境变量
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix_1210
export PATH=$INFORMIXDIR/bin:$PATH
检查
echo $INFORMIXDIR
echo $INFORMIXSERVER
错误示例
-908 Cannot connect to database server
-951 User [xxx] is not known on the database server
Informix 用户 ≠ Linux 用户
检查用户
onstat -u
授权示例
GRANT CONNECT TO username;
错误示例
ol_informix_1210 onsoctcp localhost 9088
如果 localhost 解析成 IPv6,可能失败
✅ 建议:
ol_informix_1210 onsoctcp 127.0.0.1 9088
telnet 127.0.0.1 9088
关闭防火墙测试
systemctl stop firewalld
getenforce
临时关闭
setenforce 0
错误示例
-908
-11090
✅ 正确示例(JDBC):
jdbc:informix-sqli://127.0.0.1:9088/testdb:INFORMIXSERVER=ol_informix_1210
onstat -
状态应为:
On-Line
恢复
onmode -m
| 错误码 | 含义 |
|---|---|
| -908 | 无法连接数据库服务器 |
| -951 | 用户不存在 |
| -111 | 端口未监听 |
| -25507 | 环境变量错误 |
| -387 | 数据库不存在 |
| -1802 | 权限不足 |
1. onstat - # 是否 On-Line
2. netstat -tunlp | grep 9088
3. echo $INFORMIXDIR
4. echo $INFORMIXSERVER
5. cat $INFORMIXDIR/etc/sqlhosts
6. telnet localhost 9088
7. 查看 online.log
你可以直接贴出以下信息(脱敏即可):
sqlhosts 内容onstat - 输出我可以一步一步帮你定位 ✅