Informix 报错的种类很多,只看“Informix报错”四个字没法直接定位。下面我先给你一个通用排查和解决思路,你可以对照使用;如果你愿意,把具体错误号或报错信息贴出来(如 -951、-270、-239、-329 等),我可以给你针对性解决方案。
Informix 常见报错形式:
-951: User is not known to the database server.
-270: Could not insert new row into the table.
-239: Could not insert new row - duplicate value in a unique index.
-329: Database not found or no system permission.
✅ 关键信息包括:
-951 User is not known原因:
sysusers 中授权✅ 解决方法:
CREATE USER username WITH PASSWORD 'pwd';
GRANT CONNECT TO username;
或无密码:
CREATE USER username;
-329 Database not found or no system permission✅ 检查:
SELECT name FROM sysdatabases;
✅ 确认:
DBPATH-239 Duplicate value in unique index✅ 原因:
✅ 解决:
SELECT * FROM table WHERE unique_col = value;
或:
INSERT INTO table(...) VALUES(...) ON DUPLICATE KEY UPDATE ...
(Informix 需要手动判断)
-270 Could not insert new row✅ 常见原因:
✅ 检查:
SELECT * FROM systabnames WHERE tabname = 'table';
-243 Could not position within a table✅ 原因:
✅ 解决:
ONMODE -z <session_id>
或确认:
SELECT * FROM syslocks;
-107 ISAM error: record is locked✅ 解决:
SQLCODE = -1 / -25580✅ 检查环境变量:
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
finderr 951
$INFORMIXDIR/tmp/online.log
onstat -d
onstat -u
你可以直接把下面信息发我(越多越好):
例如:
Informix 12.10
执行INSERT INTO user_table ...
报错-239 duplicate value in a unique index
我可以直接给你精确解决方案 + SQL 示例。