免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 26860 | 回复: 17
打印 上一主题 下一主题

贴个Informix错误代码中文解释供大家参考 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-20 14:44 |只看该作者 |倒序浏览
前段时间费了好大劲才找到的一些资料,现经过整理收集和大家分享!希望有所帮助


0 成功。

操作成功。当 SQL 语句成功地执行时,数据库服务器把这个 SQLCODE 值返回给应用
程序。

100 没有发现匹配的记录。

数据库服务器不能寻找更多的数据。这个信息是ANSI 标准的 SQLCODE 值。如果你想
选择或取数据,遇到了数据结束,或没有数据匹配 WHERE 子句中的条件。检查是否是
空表。使用这个 SQLCODE值决定一个语句什么时候到达数据结束。要了解更多的信
息,请参看适当的 INFORMIX-ESQL/C 程序员手册中的讨论。数据库服务器能够返回这
个 SQLCODE 值给在运行的程序。

1203 找不到信息文件

数据提取不能找到所需的信息文件。确保当你设置INFORMIXDIR 和 DBLANG 环境变量
时,已指定了适当的路径名。如果你在设置环境变量时需要帮助,请与系统管理员联
系。

1204 你的系统遇到了一个未知的终端类型。

确认你正确地设置了 TERM 环境变量。检查数据库名拼写正确与否。如果你在设置环
境变量时需要帮助,请与系统管理员联系。

2005 数据库<数据库名>;没有发现或不正确的格式。

检查数据库名拼写正确与否。

2008 表<表名>;在数据库中不存在。

在 DATABASE 节中所指定的数据库不含有在屏幕表格说明文件的 TABLE 节中包含的
表名。检查表名是否拼写正确。

2009 你没有选择数据库表。

必须在屏幕格式说明文件的 TABLE 节中,包含一个或多个表名。

2020 下表含有一个错误:<表名>;。

检查对系统运行指示中跟随出现的信息。给出的错误包含指示的表。

4074 不能在你给出路径的目录中找到 C 语言的编译器。

这是一个 4GL 的编译器的信息。你需要 C 编译器来完成编译程序的工作。改变你的
执行路径,以便在名字 cc 下能执行 C 编译器。

4102 请看错误编号<_号码>;。

这是一个 4GL 编译器的信息。查找错误编码信息。

4150 程序错误在<模块>;,<行号>;的行上。

指示行含有生成 该4GL 运行信息的错误代码。有时,实际的错误或遗漏的小问题存在
于前面的代码行中。检查解释错误的附加信息。

4152 FORMS 语句错误编号<_号码>;。

这是一个 4GL 运行时的错误。检查错误编码信息。

4153 SQL 语句错误编号<-号码>;。

这是一个 4GL 运行时的错误。检查<-号码>;信息。

4154 程序停止在<模块>;,<行号>;的行上。

这是一个 4GL 运行时的信息,它指出由于错误程序停止的地方。检查解释错误的附加
信息。

4155 4GL运行错误编号<-号码>;。

这是一个 4GL 运行时的错误。检查<-号码>;信息。

4156 ISAM 错误编号<-号码>;。

这是一个 4GL 运行时的错误。检查<-号码>;信息。

4157 SYSTEM 错误编号<-号码>;。

这是一个 4GL 运行时的错误。检查<-号码>;信息。

8009 请看错误编码 <错误码>;。

检查系统活动的指示跟随出现的信息。使用 finderr 实用工具或 Informix 错误信息
手册,找出错误信息的位置。

19750 无效的序列号。请查看安装指令。

这个 RSAM 错误信息指出不正确的序列号。

21957 无效的块大小。

你已经在 onload 或 onunload 命令中,为磁带设备指定了不够块的大小。使块的大
小比在跟随的错误信息指出的大小(用 k 字节计)大。onload和 onunload
实用工具需要块大小参数,对于 2k 字节一页的机器最小值为 4,对于 4k 字节一页
的机器最小值为 8。

25500 sqlexecd 精灵进程未许可供远程使用。

在运行 Informix 客户/服务器产品安装程序时,输入了不正确的序列号或者序列号
密码。输入正确的序列号和密码,然后重新安装 Informix 客户/服务器产品。

25501 你必须作为根注册来启动 sqlexecd daemon。

从根登录,然后启动sqlexecd daemon进程。

25502 sqlexecd daemon 不能执行fork系统调用。

与系统管理员联系,解决系统问题。

25503 这个产品不支持 Informix 网络特性。

sqlexecd daemon 不支持你的网络连接。确保在 DBPATH 环境变量中,你指定了正确
的数据库或数据库服务器。与系统管理员咨询有关 INPORMIX-NET 的许可权问题。

25504 sqlexecd daemon 不能打开一个套接字。

确保你正确地安装了 TCP/IP 网。检查 TCP/IP 网的故障。

25505 sqlexecd daemon 不能将名字连接到套接字。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25506 sqlexecd daemon 不能在套接字上接受连接。

确保你正确地安装了 TCP/IP 网。检查 TCP/IP 网的故障。

25507 你指定了一个未知的服务名或协议。

告诉你的数据库管理员,检查一下 sqlhosts 文件的输入。确保在 ONCONFIG 文件中
设置的 NETTYPE 与 sqlhosts 文件中设置的 NETTYPE 相匹配。

如果你正在使用 TCP/IP 协议,确保在 /etc/services文件中出现的服务名是正
确的。如果你在使用 NFS,用 ypmake 来检查 /etc/services 文件。有时,daemon
不能识别在缺省引导之后增加的服务名。

25510 execv 不能启动数据库引擎<服务器名>;,系统错误码<错误码>;。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25511 sqlexecd daemon 不能从客户机上接收数据。

确保你正确地安装了 TCP/IP 网。检查 TCP/IP 网的故障。

25512 不能访问数据库服务器程序。

确保你能够访问所需要的数据库服务器程序。

25514 sqlexecd daemon 不能打开日志文件。

确保你能写入所需要的日志文件。

25515 你传给 sqlexecd daemon的参数太多。

参看你的 Informix 产品手册。检查与 Informix 客户/服务器产品有关的版本信息,
以检验这些产品之间的兼容性。

25518 你在 DBNETTYPE 中指定了一个不知道的网络类型。假定是 STARLAN。

如果你的网络支持 STARLAN 连接,把 DBNETTYPE 环境变量设置为 starlan。如果你
的网络支持 TCP/IP 连接,把 DBNETTYPE 环境变量设置为 tcp/ip。Informix 6.0
版本以及更高版本的数据库服务器不使用这种信息。

25519 sqlexecd daemon 不能打开网络设备。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25520 sqlexecd daemon 不能分配调用结构。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25521 sqlexecd daemon 不能分配返回结构。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25522 sqlexecd daemon 不能分配调用结构。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25523 sqlexecd daemon 不能连接网络结构。

sqlexecd daemon 进程试图使用相同的设备号分配给另一个运行中的进程。确保系统
管理程序不需要使用在运行的 sqlexecd 进程。那么,杀死 sqlexecd 进程,启动一
个新的进程。或者,增加新的入口给 /etc/services 文件,并对使用新的服务号的服
务启动 daemon。参见你的系统手册,可获得更详细的信息。

25526 sqlexecd daemon 不能监听网络设备。

再次输入你需要的东西。如果问题仍然出现,运行网络诊断程序以确定问题的根源。

25528 sqlexecd daemon 不能接受连接。

确保你已正确地安装了网络的软硬件。检查网络中的故障。

25529 sqlexecd daemon 不能获取主机结构。

确保你所要的是一个有效的主机名。检验 /etc/hosts文件是否包含有所需要的主机名
输入。

25530 sqlexecd daemon 不能连接到所需要的端口地址。

确保在端口地址上没有其它的 daemon 在运行。

25531 sqlexecd daemon 不能连接到所需要的地址。

确保在端口地址上没有其它的 daemon 在运行。

25533 sqlexecd daemon 不能关闭网络。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25534 sqlexecd daemon 不能分配一个结构。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25535 在 sqlexecd daemon 中,地址转换失败。

再次输入你需要的东西。如果问题仍然出现,参见你的系统手册,可获得更详细的
信息。

25537 sqlexecd daemon 不能连接到网络。

确保 你正确地安装了 TCP/IP 或 StarGROUP 网络。检查网络中的故障。

25543 你指定了一个不知道的服务名或协议。

检查 /etc/services 文件,验证所需要的服务名存在。同样,确保 /etc/services
指定了正确的协议和/或端口号。

25544 sqlexecd daemon 不能发现主机结构。

确保你使用了一个有效的服务器名。检查 /etc/hosts 文件,验证你正确地定义了所
需要的服务器名,客户机地址和主机名。

25545 sqlexecd daemon 不能通知指定的服务名。

你在一个运行可移植的 INFORMIX-OnLine for NetWare,网络协议为IPX/SPX的系统
上启动 sqlexecd daemon。但是,daemon 不能在 INFORMIX-OnLine for NetWare 的
网络数据库服务器上通知服务名。可能的原因包括:另一个 sqlexecd daemon 已在
使用相同的服务名;一个有相同的服务名且刚刚已停止了的 sqlexecd daemon 不能
从它的服务处撤回通知;或者,在你的系统上可移植的 INFORMIX-OnLine for
NetWare 软件已被关闭。

每个数据库服务器的服务名在整个INFORMIX-OnLine for NetWare网络上必须保持唯
一。缺省的服务名是sqlexec。如果该名字已被网络上另外一个sqlexecd daemon
或数据库服务器所用,那么使用别的服务名启动sqlexecd daemon。可在sqlexecd命令
行中显式地指定某服务名为参数。

如果你在重新启动刚刚终止了的 sqlexec daemon,前面的sqlexecd 可能不能完成撤
销通知或者不能撤销通知服务名。当在终止一个 sqlexecd daemon 时,只使用 TERM
信号(15)(亦即kill- 15 pid,或kill pid)。如果你没有正常地结束一个服务,
那么,依据你的 INFORMIX-OnLine for NetWare 配置,可能需要大约三分钟来自动地
结束被撤销通知的服务。

29061 EDA 警告(EDA_警告)。

SQL 语句已成功执行,但是 EDA 客户或服务器发出警告。EDA 警告显示字段包括警
告信息。

EDA 警告显示字段的格式化与错误信息 -29060 中所描述的 EDA 错误显示字段相
同。参见第 451 页“Informix 网关错误”。

32700 不能找到许可文件。

程序不能打开许可文件。程序首先要打开用户在 LM_ LICENSE_FILE 中所指定的文
件。如果你还没有设置这个环境变量,程序试图打开在缺省位置
INFORMIXDIR/etc/ifmxld.dat 中的许可文件。如果你打算使用 LM- LICENSE_ FILE,
检查你是否已在该文件中正确地设置了许可文件的路径名。

32701 无效的许可文件句法。

如果特性名,daemon 名,或者服务器名超过允许的最大长度;或者特性行不完全;
那么出现这种错误。如果你在安装以后,已经编辑了许可文件,检查你编辑是否有
错。服务器名的最大长度是 32 个字符。在安装期间,自动地生成特性名,daemon 名
和特性行。

32702 不能连接到许可的 daemon 服务器。

如果在安装以后你编辑了授权文件,确保你没有错误。如果在授权文件的特性行所指
定的daemon 名字与厂商的 daemon 名字不匹配;或者,如果试图在所有的服务器结点
上连接厂商 daemon 不成功;那么出现这种错误。确保在所有的许可服务器上的
daemon 仍然在运行,并且网络在正常地工作。

32703 用户的许可号已经到期。检查 daemon 的日志。

使用 1mstat 或检查授权的 daemon 日志文件来检查网络的授权活动,以决定是否应
该从 Infomix 购买更多的用户容量。

32704 不存在这样的特性。

在许可文件中,不能找到这种特性。保证授权文件含有你在试用产品的特性行,并且
产品具有正当的授权。

32705 不存在 TCP/IP 授权服务。

检查在使用的授权文件,确保在服务器的一行或多行上的 TCP/IP 端口号有效。如果
TCP/IP 端口号无效,修改授权文件,使用有效的端口号。

32706 没有套接字连接到授权管理程序服务器。

这个错误表示在信息的传送或接收期间,出现一个内部错误。注意观察所有的发生情
况和其它错误信息。与系统管理员一起检查系统是否在正常地运行。

32707 在授权文件中的加密码是不一致的。

这个错误表示授权文件行中的代码,与在授权文件中的其它数据不匹配。当所有的软
件成分不是用相同的加密码建立时,通常会出现这种错误。仔细检查
create_license.c,ls_vendor.c 和应用程序代码,确保它们具有相同的厂商代码。
在安装期间已经生成授权文件后,不要修改授权文件中的加密代码。

32708 无效的主机。

当在授权文件中指定的主机 ID ,与软件正在运行的结点不匹配时,出现这种错误。

32709 特性已经过期。

目前的日期超过授权文件中特性的期限日期。决定是否你想从评估版改变为这个
Informix 产品的普通版,并与 Informix 联系,获得你需要的程序。

32710 无效的日期格式在授权文件中。

检查授权文件中的日期字段是否具有格式dd-mmm-yyyy,在这里 dd 是表示两位数字的
日,mmm 是表示三个字母的月,yyyy是表示四位数字的年。安装程序生成这些日期。
如果你没有在这些字段上修改授权文件,把这个问题连同授权文件的输出报告给
Informix 技术支持部。

32711 来自授权 daemon 服务器的无效返回数据。

保证在服务器行上的端口号没有任何其它的服务使用。与系统管理员共同检查一下,
保证网络在正常运行。检查授权的 daemon 服务器日志以获取所有的错误信息。

32712 在许可文件中没有服务器行。

在许可文件中不存在服务器行。所有的非零许可计数特性至少需要一个服务器行。

32713 网络数据库中不能找到 SERVER 主机名。

检查所有相关的系统文件,如 /etc/hosts,保证整个网络都知道服务器主机名。

32714 不能从授权 daemon 服务器中读数据。

保证所有授权服务器中的 daemon 正在运行。对任何错误信息检查 daemon 日志。

32715 不能写数据到授权 daemon 服务器中。

与系统管理员共同检查一下,保证网络在正常运行。同样的,检查 daemon 日志中其
它错误信息。

32716 授权 daemon 服务器不支持这种特性。

特性已经到期或者还没有开始,或者你正想使用的产品的版本不是许可的版本。确保
在授权daemon 服务器和运行这种 Informix 产品的计算机中,授权文件已被正确地
建立。

32717 授权 daemon 服务器忙 (并不是大多数)。

授权 daemon 服务器忙于建立服务器结点的法定人数,以便授权能够启动。稍后再试
一下这一操作。

32718 授权文件不支持这一版本。

保证你正想使用的产品的版本是授过权的。检查授权文件以保证在特性行上的版本与
你想使用的版本一样或更新。

32719 在授权 daemon 服务器上特性检查失败。

检查请求没有从厂商 daemon 接收到合适的回答。(可以认为授权一直在使用)。检
查 daemon 日志输出看是否有更多的错误信息。如果错误重复出现,请记录下所有情
况,并与 Informix 技术支持部 联系。

32720 授权 daemon 服务器临时性地忙(新的服务器连接)。

厂商 daemon 忙于建立法定人数条件。来自客户机的新请求在这个周期间被延缓。稍
后再试一下这个操作。

32721 授权 daemon 服务器不支持这一特性的这个版本。

你想使用的版本比你授权的版本更新。检查授权文件中的特性保证所需要的产品版本
与你正使用版本相同或更新。

32722 需要比该特性所能支持的更多许可。

为了得到多于授权文件中所支持的授权,进行切出操作。保证你没有为检查出比处理
能力更多的授权而改变授权核对请求。对于每个请求应该切出唯一的一个授权。

32723 不能读授权文件。

保证授权文件具有正确的读许可权。

32724 无效的 daemon 加密握手。

在任何授权操作出现之前,客户机利用 daemon 执行加密握手操作。这次握手操作失
败了。与系统管理员一起检查一下,保证系统和网络正在正常运行。如果错误重复出
现,请记录下所有细节,并与 Informix 技术支持部 联系。

32725 在 daemon 中的特性数据库损坏。

daemon 的运行特性数据结构是坏的。这一内部的 daemon 错误表示存在严重的问题。
如果错误重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

32726 不能分配动态内存。

malloc() 调用失败,没有返回足够的内存。当从授权文件(特别地,如果用户已经设
置超长的 LM_LICENSE_FILE 路径)读特性时,可能出现这一错误。与系统管理员共同
检查一下,保证系统在正常运行。

32727 特性没有切出

这个信息是提供给用户的。它不是一个错误。

32728 在 daemon 中设置检查的时钟不可利用。

这个信息是提供给用户的。它不是一个错误。

32766 未知的错误信息<号码>;。

你启动的程序不能找到 Informix 错误信息文件。INFORMIXDIR环境变量设置可能不正
确。INFORMIXDIR 指向含有存储信息文件的 msg 目录。

35201 在 SQL 语句中使用了SQLCODE或使用 SQLCODE 作为 IN 参数。

从 SQL 语句中删除 SQLCODE 和/或从参数表中删除 IN。SQLCODE 只是一 out
参数。

35202 SQLCODE 参数必须用 SQLCODE_TYPE 类型说明。

把 SQLCODE 声明为一个 SQLCODE_TYPE 类型的参数。

38002 未知的事件记忆或代码<事件记忆码>;。

在审计追踪中,遇到了未知的事件记忆或代码。检查事件记忆或代码,修改命令行或
装载文件,再重新试一下。

38005 无效的路径名,< 路径名 >;( 错误码= <号码>

你指定了一个无效的路径名。核实一下你的输入,再试一下。

38006 无效的文件名,< 文件名 >;(错误码= <号码>

你指定了一个无效的文件名。核实一下你的输入,再试一下。

38007 在文件<文件名>;上没有读许可权。

对指定的文件,你没有读许可权。核实一下许可权,再试一下。

38008 不能建立文件< 文件名 >;( 错误码= <号码>

指定的文件不能被建立。核实一下路径和目录的许可权,再试一下。

38010 内部错误:非法使用 set_msg (越界)。

set_msg 函数已经超出有错的缓冲区中分配的存储量。如果错误重复出现,请记录下
所有细节,并与 Informix 技术支持部 联系。

38047 无效的序列号。请查阅安装说明。

你输入了一个无效的序列号。检查一下你的产品的安装说明,再试一下。

38053 无效的选项用法:对 add 需要 -u。

你对 onaudit 的 add 命令不完整。你没有指定用户名。检查一下用法信息,
再试一下。

38054 无效的选项用法:对 modify 需要 -u。

你对 onaudit 的 modify 命令不完整;没有指定用户名。检查一下用法信息,
再试一下。

38055 不知道的选择项 '-x'。

对于 onaudit 的命令行有不正确或不完整的句法。你指定了一个不知道的选择项。
检查一下用法信息,再试一下。

38060 在行号为< 行号>;的行,无效地格式化了 mask/role/event 的定义。

数据库服务器不能对装入文件中 mask/role/event 的定义作句法分析。编辑装入
文件,再试一下。

38061 对 onaudit ,动作必须是第一个参数。

onaudit 的命令行有不正确的或不完整的句法。动作必须是第一个参数。检查一下
用法信息,再试一下。

38062 发现没有带需要参数的选择项。

onaudit 的命令行有不正确的或不完整的句法。你没有包含选择项需要的参数。检查
一下用法信息,再试一下。

38064 不可以定义多于两个事件集合。

onaudit 的命令行有不正确的或不完整的句法。你已经指定了多于两个事件集合。
检查一下用法信息,再试一下。

38065 不能连接共享内存。

确认 INFORMIX-OnLine 动态服务器在活动,再试一下。

38083 在bulk操作(行号为< 行号>期间,不能修改 mask。

在装入文件中定义的 mask 已经存在。或者编辑装入文件,或者删除存在的定义。

38084 这个平台不支持 OS 方式审计。

这个平台不执行 -O 选择项。从命令中删除它,再试一下。

38085 不能找到 ONCONFIG 文件。

数据库服务器不能找到 $INFORMIXDIR/etc/$ONCONFIG 文件,和/或 ADTPATH 和/或
DBSERVERNAME 没有定义。

38086 发现无效格式过的审计记录。

审计追踪含有句法分析错误。检查路径和目录许可权,再试一下。

38088 不能作用用户<用户名>;,出现错误<号码>;。

这条一般的 onaudit 失败信息可能表示一条命令不正确或不完整,数据库不能访问,
或者用户不是 informix。检查许可权,ID及命令行句法,再试一下。

38089 不起作用,出现错误<号码>;。

这个一般的 onaudit 失败信息可能表示一条命令不正确或不完整,数据库不能访问,
或者用户不是 informix。检查许可权 id及命令行句法,再试一下。

38090 跳过现有的审计追踪<文件名>;。

数据库服务器不能覆盖一个现有的审计追踪文件。当 INFORMIX-OnLine 动态服务器运
行起来,并且ADTPATH 保持旧的审计数据时,可能出现这种信息。删除所有旧的审计
追踪。

38091 审计追踪建立<文件名>;失败。

数据库服务器不能打开下一个审计文件,因为对 aio_fopen() 调用失败。确保
ADTPATH 指向由用户或 informix 组可以写的有效目录。

38092 不能打开下一个审计文件。

数据库服务器不能打开下一个审计文件,因为对 aio_fopen() 调用失败。确保
ADTPATH 指向由用户或 informix 组可以写的有效目录。

38093 Informix 级审计写失败 (错误码 =< 号码>

数据库服务器不能把当前审计记录写到审计追踪文件中。确保 ADTPATH 指向由用户或
informix 组可以写的有效目录,并且有盘空间可以使用。也可检查目录和审计追踪
文件的许可权。

38094 为 ADTERR 设置的<串>;无效。

ONCONFIG 文件包含无效的参数。为了使参数为 0/1,修改 ONCONFIG
文件。

38095 为 ADTMODE 设置的<串>;无效。

ONCONFIG 文件包含无效的参数。为了使参数为 0/1,修改 ONCONFIG
文件。

71561 只有 Informix-Admin 组的成员才能执行这个命令。

你登录所用的帐号可能不属于 Informix-Admin 组的成员。
请与 Windows NT 系统管理员联系。

71562 请用 -iy 选项初始化 INFORMIX-OnLine
Dynamic Server。

在控制面板->;服务器- >;“启动”对话框中指定的命令行选项为 -i。

当 OnLine 作为服务器运行时,它不会提示你进行确认。
如果确实想完全初始化 OnLine 根 dbspace,
则改用 -iy 选项启动 OnLine Dynamic Server。

71563 OnLine 不能访问 %INFORMIXDIR%\dbssodir 或
%INFORMIXDIR%\aaodir。

首先,检查对于 dbssodir 和 aaodir前的路径字
段的访问权限。如果 %INFORMIXDIR% 在网络驱动器上,
应确保 oninit 进程的权限没有改变。另外,还须确保
在下列注册表中的 AAO 和 DBSSO 组名是有效的:

HKEY_LOCAL_MACHINE\SOFTWARE\Informix\OnLine\CurrentVersion\Security

71564 警告:在存储过程中不支持
SYSTEM 命令。

在 Version 7.21 以前,INFORMIX-OnLine Dynamic Server for Windows NT
不支持存储过程中的SYSTEM命令。在 Version 7.21 中添加了这个特性。

在存储过程的外面运行SYSTEM命令。


71565 对于指定的配置,根 dbspace 不够大。
实际的大小为 xxx 页,而需要的大小为 yyy 页。

尽量在包含根 dbspace 的磁盘上释放出一些空间,
并重新初始化 OnLine Dynamic Server。

71566 在 ONCONFIG 文件中,为 TAPEDEV 或 LTAPEDEV
指定的值是无效的。

为 TAPEDEV 和/或 LTAPEDEV 指定值。关于参数设置配置的详细信息,
请参阅数据库服务器管理员手册。

71567 OnLine 以恢复方式启动失败。
检查事件日志来获取错误信息。

阅读事件日志,了解来自 OnLine 的错误,并将之纠正。

71568 oninit :在注册表的 SQLHOSTS 键之下
没有找到 DBSERVERNAME `servername'。

在注册表中添加键。更详细的信息,请参考数据库服务器的管理员手册。

71569 OnLine 以恢复方式启动失败。
服务已在运行中。

检查 SQLHOSTS 键之下 INFORMIXSERVER 的注册表设置。

71570 因为用户未用密码登录,
所以不能执行存储过程中的 System() 命令。

用密码重新登录,并执行存储过程。

71571 错误信息的缓冲区大小不够。

为错误信息分配的缓冲区不够大。
与 Informix 技术支持联系。

71572 存储过程中的 System() 命令失败。

更详细的信息请查阅 OnLine 信息日志。

-1 不是所有者。

一个具有上述意义的操作系统错误代码,不可预料地返回到数据库服务器。检查在当
前操作中所使用的文件和目录的所有关系和许可权。查找操作系统的错误信息,它会
给出更详细的信息。

-2 没有这样的文件或目录。

一个具有上述意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,它会给出更详细的信息。

-3 没有这样的进程。

一个具有上述意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,它会给出更详细的信息。如果错误重复出现,请记录下所有细
节,并与 Informix 技术支持部 联系。

-4 中断系统调用。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。你可能在
关键时刻按下中断键,或者可能软件生成中断信号,比如UNIX 命令 kill。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-5 输入/输出错误。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找操作
系统的错误信息,它会给出更详细的信息。特别地,应该想办法决定是什么设备产生
的错误,以及错误是否阻塞数据库或其它种类的文件。

-6 没有这样的设备或地址。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。这可能反
映在配置数据库软件中的一些错误,或者可能是在报表的 REPORT TO 子句中有错误。
查找其它操作系统的错误信息,它会给出更详细的信息。

-7 参数表太长。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,它可能会给出更详细的信息。如果错误重复出现,请参考
“Informix-OnLine管理员指南附录B "的“陷井错误 ”以得到进一步诊断。请就诊断
信息与 Informix 技术支持部联系。

-8 执行格式错误。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,它会给出更多信息。如果错误重复出现,请记录下所有细节,并
与 Informix 技术支持部 联系。

-9 无效的文件号。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可能会给出更详细的信息。如果错误重复出现,请记录下所有细
节,并与 Informix 技术支持部 联系。

-10 没有子进程。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可能会给出更详细的信息。如果错误重复出现,请记录下所有细
节,并与 Informix 技术支持部 联系。

-11 没有更多的进程。

你的应用程序不能启动数据库服务器进程,或是不能建立某些下一级函数,如
REPORT TO 管道或网络访问程序所需要的进程。这个错误也可能反映了你的操作系统
中配置的限制。查找其它操作系统错误信息,它会给出更详细的信息。

-12 无足够的核心。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。核心可能
涉及到操作系统函数所需内存的数据空间。查找其它操作系统错误信息,可能会给出
更详细的信息。

-13 许可被拒。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。这个错误
代码一般是由于想执行一个不是程序或 shell 笔迹的文件;它也可能反映一个报表中
的 REPORT TO 说明有错。查找其它操作系统错误信息,可能会给出更详细的信息。

-14 无效地址。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可能会给出更详细的信息。如果错误重复出现,请记录下所有细
节,并与 Informix 技术支持部联系。

-15 需要块设备。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。在数据库
软件的配置中可能存在错误。这个错误可能包含大块设备或磁带设备赋给 OnLine 的
参数中的无效地址。查找其它操作系统错误信息,可能会给出更详细的信息。

-16 安装设备忙。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可能会给出更详细的信息。如果错误重复出现,请记录下所有细
节,并与 Informix 技术支持部联系。

-17 文件已存在。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。这个错误
可能反映企图在 REPORT TO 说明中替换一个存在的文件。查找其它操作系统错误信
息,可能会给出更详细的信息。

-18 交叉设备连接。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部 联系。

-19 没有这样的设备。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。在数据库
软件的配置中可能存在错误。这个错误可能包含赋给 OnLine 的大块设备或磁带设备
参数中的无效地址。或者,在报表中的 REPORT TO 说明中可能有错误。查找其它操作
系统错误信息,可能会给出更详细的信息。

-20 不是一个目录。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可能会给出更详细的信息。某些数据库服务器把存储数据库作为
名为 database.dbs的目录。如果在 DBPATH 中用 .dbs 后缀放置文件(而不是目
录),这种错误可能会发生。

-21 是一个目录。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。已直接对
目录进行文件类型的操作。有些数据库服务器存储表,索引和锁定文件,是作为数据
库目录中带有特别后缀的文件的。如果用目录来代替这样的文件,这就可能产生错
误。查找其它操作系统错误信息,可能会给出更详细的信息。

-22 无效的参数。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可能会给出更详细的信息。如果错误重复出现,请参考
“Informix-OnLine管理员指南附录B "的“陷井错误 ”以得到进一步诊断。
请就诊断信息与 Informix 技术支持部联系。

-23 文件表溢出。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。这一错误
可能反映出在操作系统中配置的限制。查找其它操作系统错误信息,它会给出更详细
的信息。

-24 太多的打开文件。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。这一错误
可能反映出在操作系统中配置的限制。查找其它操作系统错误信息,可能会给出更
详细的信息。

-25 不是打字机。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。在数据库
软件的配置中可能有错误。这个错误可能包含给于 OnLine的 log-device
参数中的错误地址。查找其它操作系统错误信息,可能会给出更详细的信息。
如果错误重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-26 文本文件忙。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果当前
的操作需要使用文本文件 (如报表中的 LOAD 或 PRINT FILE 语句的输入文件),
那么在后面要再试一下操作。查找其它操作系统错误信息,可能会给出更详细的
信息。

-27 文件太大。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。检查操作
系统的文档,找出“太大”在当前操作的上下文中可能是指的是什么意思。

-28 设备已没有空间。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。或者数据
库表,或者 ASCII 输出文件可能已经占满了可用的盘空间。查找其它操作系统错误信
息,可能会给出更详细的信息。

-29 非法的查找。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可能会给出更多信息,例如,出现错误的设备。如果错误重复
出现,请记录下所有细节,并与 Informix 技术支持部联系。

-30 只读文件系统。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。整个文件
系统 (盘或盘分区)已成为只读的。与系统管理员联系找出原因。

-31 太多的连接。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,特别涉及到的单个文件或多个文件,可能会给出更多信息。如果
错误重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-32 破裂的管道。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。管道是两
个进程之间的数据通道;如果在另一个进程正等待数据时,一个进程已不可预料地退
出,则管道是破裂的。查找其它操作系统错误信息,尤其在所涉及的进程方面,可能
会给出更多信息。如果错误重复出现,请记录下所有细节,并与 Informix 技术支持
部联系。

-33 参数太大。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部 联系。

-34 结果太大。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-35 操作可能受阻。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-36 操作正在进行中。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-37 操作已在进行中。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-38 在非套接字上进行套接字操作。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,尤其在涉及到的问题和处理方面,可能会给出更多信息。如果错
误重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-39 需要目标地址。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-40 信息太长。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-41 错误的套接字协议类型。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-42 协议不支持的选项。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-43 不支持协议。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-44 不支持套接字类型。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-45 不支持套接字上的操作。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-46 不支持协议系列。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-47 协议家族不支持地址家族。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-48 地址已在使用。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-49 不能设定所需要的地址。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-50 网络关闭。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果你正
想使用 INFORMIX-STAR 或 INFORMIX-NET,请与系统管理员联系,找出何时备份网
络。不然的话,请记录下所有细节,并与 Informix 技术支持部联系。

-51 网络不可到达。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果你正
想使用 INFORMIX-STAR 或 INFORMIX-NET,请与系统管理员联系,找出网络的问题。
不然的话,请记录下所有细节,并与 Informix 技术支持部联系。

-52 网络将连接放在重置位置上。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果你正
想使用 INFORMIX-STAR 或 INFORMIX-NET,请与系统管理员联系,以报告网络的问
题。不然的话,请记录下所有细节,并与 Informix 技术支持部联系。

-53 软件引起连接异常结束。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果你正
想使用 INFORMIX-STAR 或 INFORMIX-NET 请与系统管理员联系,以报告网络的问题。
不然的话,请记录下所有细节,并与 Informix 技术支持部联系。

-54 利用对等程序重置连接。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果你正
想使用 INFORMIX-STAR 或 INFORMIX-NET 请与系统管理员联系,以报告网络的
问题。不然的话,请记录下所有细节,并与 Informix 技术支持部联系。

-55 无缓冲区空间可利用。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。查找其它
操作系统错误信息,可获得更详细的信息。

-56 套接字已经被连接。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-57 套接字没有连接。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-58 在套接字关闭之后,不能传送。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-59 太多的引用:不能连接。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果错误
重复出现,请记录下所有细节,并与 Informix 技术支持部联系。

-60 连接时间超出。

一个具有所示意义的操作系统错误代码,不可预料地返回到数据库服务器。如果正试
图使用 INFORMIX-STAR 或 INFO-RMIX NET,与系统管理员联系,报告网络的问题。
如果还不能解决问题,请记录下所有细节,并与 Informix技术支持部联系。

-61 连接被拒绝。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果你正试图使用
INFORMIX-STAR或INFORMIX-NET,与你的系统管理员联系以报告网络问题。否则,
请记录下所有的环境信息并与Informix技术支持部门联系。

-62 符号连接的层次过多。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。数据库服务器一般
不使用符号连接。查看其它操作系统错误信息可能会获得进一步的信息,特别是正在
访问的文件。

-63 文件名过长。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。报表的REPORT TO语
句的编码可能有错误。否则,请记录下所有的环境信息并与Informix技术支持部门联
系。

-64 主机已关闭。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果你正试图使用
INFORMIX-STAR或INFORMIX-NET,与你的系统管理员联系并报告网络问题。否则,
请记录下所有的环境信息并与Informix技术支持部门联系。

-65 无法达到的主机。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果你正试图使用
INFORMIX-STAR或INFORMIX-NET,与你的系统管理员联系并报告网络问题。否则,
请记录下所有的环境信息并与Informix技术支持部门联系。

-66 目录不空。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。查看其它操作系统
错误信息可能会获得进一步的信息,特别是所要删除的目录。如果错误再次出现,
请记录下所有的环境信息并与Informix技术支持部门联系。

-67 过多的进程。

你的应用程序不能启动一个数据库服务器进程,或是不能为某些子例程函数,如
REPORT TO管道或是一个网络存取程序,建立所需的进程。这个错误可能反映了
操作系统配置的极限。查看其它操作系统错误信息可能会获得进一步的信息。

-68 过多的用户。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。这个错误可能反映
了操作系统配置的极限。查看其它操作系统错误信息可能会获得进一步的信息。

-69 超出磁盘限额。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。可能在操作系统中
配置了磁盘限额的极限。查看其它操作系统错误信息可能会获得进一步的信息,特别
是有关的磁盘。与系统管理员联系,要求更多的自由限额。

-70 失效的NFS文件句柄。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。这反映了在网络文
件系统中文件服务器的一个错误。尽管Informix数据库服务器不支持对安装在NFS上文
件系统的数据库存取,但是当数据库服务器可执行文件或其他与数据库服务器相关的
文件位于安装在NFS的磁盘上时(换句话说,就是环境变量INFORMIXDIR命名了一个安
装在NFS上的磁盘),就有可能发生这个错误。这个错误一般是暂时的,反映了文件服
务器的崩溃和后来的重新启动。重新安装文件系统到你的工作站上并重新运行你的
应用程序。

-71 路径中远程的层次过多。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果错误再次
出现,请记录下所有的环境信息并与Informix技术支持部门联系。

-72 不是一个数据流设备。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。查看其它操作系统
错误信息可能会获得进一步的信息,特别是有关的设备。如果错误再次出现,请记录
下所有的环境信息并与Informix技术支持部门联系。

-73 计时器超时。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果错误再次
出现,请记录下所有的环境信息并与Informix技术支持部门联系。

-74 数据流资源用尽。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果错误再次
出现,请记录下所有的环境信息并与Informix技术支持部门联系。

-75 没有想要的类型的信息。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果错误再次
出现,请记录下所有的环境信息并与Informix技术支持部门联系。

-76 不是一个数据信息。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果错误再次
出现,请记录下所有的环境信息并与Informix技术支持部门联系。

-77 标识符被删除。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果错误再次
出现,请记录下所有的环境信息并与Informix技术支持部门联系。

-78 侦测到/避免了死锁情况。

一个带有上述含义的操作系统错误码意外地返回到数据库服务器。如果错误再次
出现,请记录下所有的环境信息并与Informix技术支持部门联系。

在AIX下,这个代码的意义是连接超时。

-79 没有可用的记录锁。

一个具有上面所说的意义的操作系统错误码意外地返回到数据库服务器。这个
Informix数据库服务器的实现可能使用了核心锁定,就是说使用了操作系统的功能来
锁定表的行。操作系统锁定表的能力已被超出。与你的系统管理员联系把操作系统配
置得可以支持更多的锁。同时也检查你的应用程序,看看是否可以少用一些锁,例如
在每一个事务中少更新一些行,或是锁定整个表来代替锁定行。

-100 ISAM错误:对有唯一键的记录重复取值。

某一行在被插入或是更新时,其键值在索引中已经存在。对C-ISAM程序,在最后一次
调用iswrite,isrewrite,isrewcurr或isaddindex时传递了重复的键值。检查程序逻
辑和输入数据。对SQL产品,在最后一个INSERT或UPDATE中使用了重复的键值。

-101 ISAM错误:文件未打开。

ISAM处理器被要求使用一个未打开的文件(表)。对C-ISAM程序,程序试图在调用
isopen打开文件前使用该文件,或是试图写一个只读方式打开的文件。如果错误再次
出现,请参考INFORMIX-Online的“管理员指南”附录B,“陷井错误”以得到进一步
诊断。有关诊断信息请与Informix技术支持部联系。

-102 ISAM错误: 不合法的ISAM函数参数。

一个传递给C-ISAM函数的参数值超出了可接受的范围。对C-ISAM程序,检查这个函数
调用中使用的参数,并与该函数的文档比较。如果错误再次出现,请参考INFORMIX-
Online的“管理员指南”附录B,“陷井错误”以得到进一步诊断。有关诊断信息请与
Informix技术支持部联系。

-103 ISAM错误: 不合法的键描述符(部分过多或是太长)。

ISAM处理器被给予了一个无效的键描述符。对C-ISAM程序,检查键描述符。每个键描
述符最多可以有8个部分和120个字符。如果错误再次出现,请参考INFORMIX-Online
的“管理员指南”附录B,“陷井错误”以得到进一步诊断。有关诊断信息请与
Informix技术支持部联系。

-104 ISAM错误: 打开文件过多。

ISAM处理器已经到达了打开文件数的极限。对C-ISAM程序,检查并改变程序逻辑使得
它同时打开较少的文件。使用isclose来关闭不需要的文件。对SQL产品,这个查询过
于复杂;它同时使用了过多的表。分步执行查询并使用临时表。

-105 ISAM错误: 坏的ISAM文件格式。

一个ISAM文件(表或索引)的内容已被损坏。对C-ISAM,如果已使用了事务日志,你可
以用isrecover程序来恢复该文件。否则,重新建立或是从备份上恢复该文件。对SQL
产品,使用bcheck或secheck实用工具来获取有关此问题的进一步信息,可能的话改正
错误(在INFORMIX-OnLine数据库服务器中使用tbcheck或是在INFORMIX-OnLine
动态服务器 中使用oncheck)。如果实用工具不能恢复表或索引,你必须重新建立或
恢复它。

-106 ISAM错误: 非排它存取。

ISAM处理器被要求增加或取消一个索引,但它并没有排它存取权。对C-ISAM程序,在
做这个操作之前文件必须以排它存取方式打开。检查程序逻辑,确保在打开文件时把
ISEXCLLOCK标志传递给了isopen。对SQL产品,在要求对表的排它锁定时,
INFORMIX-OnLine 动态服务器和INFORMIX-SE数据库服务器中可能会返回这个错误。
例如,当第一个用户锁定了表后,第二个用户又试图变更表时,就会出现这个错误。

-107 ISAM错误: 记录被锁定。

所需求的记录,或是包含该记录的文件(表),已被另一个用户的需求锁定。这一般
是一个暂时的情况。程序可以通过滚回当前事务来恢复,等一小段时间,然后重新执
行操作。对交互式的SQL,重新进行该操作。对C-ISAM程序,检查程序逻辑,确保程序
可以处理这种在多程序环境中的正常事件。你可以把ISEXCLLOCK标志传递给isopen以
获得对表的排它存取。对SQL程序,检查程序逻辑,确保程序可以处理这种在多程序环
境中的正常事件。处理这种情况的最简单的方法就是使用命令SET LOCK MODE TO
WAIT。对于批量更新参见LOCK TABLE命令和DATABASE语句的EXCLUSIVE选项。

-108 ISAM错误: 键已存在。

ISAM处理器被要求建立一个已存在的索引。对C-ISAM程序,检查程序逻辑。该程序
必须在它定义其它索引之前先删除已有的索引。如果错误再次出现,请记录下所有的
环境并与Informix技术支持部联系。

-109 ISAM错误: 该键是文件的主键。

ISAM处理器被要求删除主键索引。对C-ISAM程序,isdelindex调用不能删除主键。
如果错误再次出现,请记录下所有的环境并与Informix技术支持部联系。

-110 ISAM错误: 文件的开头或结尾。

ISAM处理器向前或向后顺序地读取行时达到了文件(表)的一端。对C-ISAM程序,这个
信息是文件结束的正常信号。使用isread的其它检索方法来在文件中重新定位。对SQL
产品,参见SQL错误信息或返回代码。

-111 ISAM错误: 没找到记录。

ISAM处理器不能定位需求的记录。对C-ISAM程序,根据所使用的检索方式,没有具有
所需求的索引值或记录号的记录。确认正在使用正确的索引。对SQL产品,参见SQL
错误信息或返回代码。可能是此次查询没有找到相应的行。

-112 ISAM错误: 没有当前记录。

ISAM处理器被请求返回一个当前记录,但是还没有建立当前记录。对C-ISAM程序,检
查程序逻辑。在程序使用ISCURR检索方式之前,必须使用另一个检索方式,例如
ISFIRST,以建立一个当前记录。如果错误再次出现,请记录下所有的环境并与
Informix技术支持部联系。

-113 ISAM错误:该文件已被锁定。

另一个用户的需求已经用排它方式打开需求的文件(表)。在使用文件锁定的系统中,
存在一个<表名>;.lok文件。可能这个文件是另一个程序异常结束后遗留的产物。如果
你能肯定是这样的,你可以通过清空该文件来解除锁定。在许多系统中都不使用锁定
文件,INFORMIX-OnLine动态服务器也从不使用它。

对C-ISAM程序,在文件被解锁后重新运行该程序。对SQL产品,表是由LOCK TABLE
显式锁定,并在执行CREATE INDEX和ALTER TABLE语句时被隐含地锁定。在表被
解锁后重新运行程序或查询。

-114 ISAM错误: 文件名过长。

ISAM处理器被要求打开或建立一个文件名长于10个字符的文件。对C-ISAM程序,这个
长度超出产品的最大值。选择一个较短的文件名。如果错误再次出现,请记录下所有
的环境并与Informix技术支持部联系。

-115 ISAM错误: 不能建立锁定文件。

ISAM处理器被要求存取使用锁定来存取一个文件或一行。因为这个操作系统使用锁定
的文件,ISAM必须建立一个<表名>;.lok文件。当ISAM试图这样做时,它收到了操作系
统的错误代码。可能是磁盘已满,或者你的帐户可能没有在相关目录的写许可。查看
操作系统错误信息可能会获得进一步的信息。

-116 ISAM错误: 不能分配内存。

ISAM处理器需要分配内存用于数据存储但是没有成功。可能是操作系统出了问题;
查看操作系统错误信息可能会获得更多的信息。一个原因可能是选定了包含有巨大的
BYTE或TEXT字段的一行到一个临时表中或是作为一个INSERT或UPDATE的一部分。
在某些版本中,整个行包括BLOB值都被缓冲到内存中。对C-ISAM程序,查看程序,
寻找任何可以减少内存使用的办法。对SQL产品,如果可能的话,简化程序,屏幕
表格或报表。

-117 ISAM错误: 坏的整理顺序。

这个信息不会被任何当前的Informix产品显示。如果该错误重复出现,请记录下所有
的环境并与Informix技术支持部联系。

-118 ISAM错误: 不能读取日志记录。

ISAM处理器试图滚回一个事务或恢复一个文件但是在读取日志记录时遇到了错误。查
看操作系统错误信息可能会获得进一步的信息。使用dblog或selog实用工具获取与此
问题有关的更多的信息。如果该文件(表)不能被恢复,则必须重新建立或从备份上
恢复。

-119 ISAM错误: 坏的日志记录。

ISAM处理器正试图滚回一个事务或恢复一个文件,但是在日志记录中遇到了坏的数
据。dblog或selog实用工具可以用来获取与此问题有关的更多的信息。如果该文件
(表)不能被恢复,则必须重新建立或从备份上恢复。

-120 ISAM错误: 不能打开日志文件。

ISAM处理器试图打开一个事务日志文件但接到了从操作系统来的错误信息。查看操作
系统错误信息可能会得到进一步的信息。对C-ISAM程序,检查传递给islogopen
的参数。确定它指定了一个已存在的可写的日志文件的正确的名字,并且当文件不在
当前目录下时,它包含了路径。对SQL产品,START DATABASE语句建立了事务的日志
文件。确定该日志文件还在与执行STARTDATABASE语句时相同的目录位置上,并且你
的帐户可以写存取。

-121 ISAM: 不能写日志记录。

ISAM处理器正试图给事务日志增加一条记录,但是从操作系统接到了一个错误信息。
磁盘可能已满。查看操作系统错误信息可能会获得进一步的信息。事务日志文件可能
会增长得相当大。为了减小其大小,你必须做两件事。首先给数据文件(对C-ISAM)或
所有的数据库文件(对SQL)做一个备份拷贝,然后,清空事务日志文件。如果例行地执
行以上步骤,就可以控制日志文件的大小。

-122 ISAM错误: 事务不可用。

ISAM处理器被要求给一个事务标记开始或结束,但是事物日志并未工作。对C-ISAM
程序,这个文件没有以日志方式打开。检查isopen调用并确保ISTRANS参数已被包括。
对SQL产品,这个数据库不支持事务日志。如果你正在使用OnLine数据库服务器,请
OnLine 管理员允许这个数据库进行日志操作。否则,使用START DATABASE
语句来开始事务日志。在所有情况下,日志只能在已获得数据库的一个完全的备份后
马上开始。

-123 ISAM错误:没有共享内存。

ISAM的实现使用了共享内存,但是共享内存分区还没有建立起来。与系统管理员或安
装产品的人联系。

-124 ISAM错误: 还没有开始工作。

ISAM处理器被要求为事务结束给一个标记,但是还没有任何事务开始。对C-ISAM
程序,检查程序逻辑,确保在调用iscommit或isrollback之前已调用过isbegin。对
SQL产品,确定在执行COMMIT WORK或ROLLBACK WORK前先执行了BEGIN WORK。

-125 ISAM错误: 不能使用nfs。

ISAM处理器被要求打开一个位于其它机器的磁盘上的文件,并通过网络文件系统(NFS)
来对它进行存取。这个功能不被支持。数据库文件必须位于在物理上属于正在运行
ISAM处理器的计算机的磁盘上。要想使用其他计算机上的数据库,你必须安装
INFORMIX-STAR或INFORMIX-NET网络软件。那时这台计算机上的应用程序就可以与
磁盘所在的计算机上运行的数据库服务器进行通讯了。

-126 ISAM错误: 错误的行 id。

ISAM处理器被要求使用某一行的物理位置来检索它,但是在那个位置却找不到。对
C-ISAM程序,如果使用记录号进行存取,检查在isrecnum中存储的数据;它是无效
的。否则当前的索引可能已被损坏;运行bcheck或secheck实用工具。对SQL产品,
索引已被损坏;如果你正在使用INFORMIX-SE数据库服务器,运行bcheck或secheck
实用工具来检查和修复索引。如果使用的是INFORMIX-OnLine数据库服务器,运行
tbcheck。如果使用的是INFORMIX-OnLine 动态服务器,运行oncheck。

-127 ISAM错误: 没有主键。

ISAM处理器的一个函数被调用,该函数需要一个唯一的主键索引,但是该文件没有这
样的索引。对C-ISAM程序,检查数据文件的设计;它是用零部分主索引建立的,(就
是说,使用记录号序列检索)。如果不是上述情况,索引可能已被损坏;运行bcheck
或secheck实用工具。如果错误重复出现,请记录所有的环境并与Informix 技术支持
部联系。

-128 ISAM错误: 没有日志。

ISAM处理器的一个函数被调用,该函数需要一个事务日志,但该文件没有日志。对
C-ISAM程序,检查数据文件的建立。在使用象isbegin这类函数之前,程序必须用
islogopen设置一个日志。对 SQL产品,这个数据库不支持事务日志。如果你正在使用
OnLine数据库服务器,请系统管理员允许此数据库进行日志操作。否则,使用START
DATABASE语句开始事务日志。在所有情况下,日志只能在数据库完全备份后马上
开始。

-129 ISAM错误: 过多的用户。

ISAM的实现使用了共享内存,配置时已经达到为共享内存所规定的最大并发用户数。
你可能需要增加ONCONFIG文件中的参数USERTHREADS和TRANSACTIONS的值。
如果问题再次出现,与系统管理员或是安装此产品的人联系。

"用户"这个词可能会使人误解;实际上是对使用数据库服务器的并发的应用程序个数
有限制。一个用户可以同时启动多个应用程序。例如,当用户启动 INFORMIX-4GL程序
员环境时,它打开一个与数据库服务器的会话。当用户发出命令编译一个4GL程序时,
4GL编译器被启动并且还打开一个与数据库服务器的会话。在编译期间,用户有两个
会话在运行。

-130 ISAM错误: 没有这个dbspace。

这个代码指出下面两个问题之一。最可能的问题是这个操作以名字指定了一个
dbspace(例如在CREATE TABLE语句的IN子句中或是在环境变量DBSPACETEMP的
设置中),但这个名字没有被定义。你可以运行带有-d选项的tbstat或onstat实用
工具来查看已定义的dbspace的名字。请求OnLine管理员建立一个新的dbspace。

如果操作并没有显式地命名一个dbspace或是该名字是正确的,问题就比较严重了。该
错误可能反映了根dbspace的保留页被损坏。使用实用工具tbcheck或oncheck的-cr
选项来查看这个情况。

-131 ISAM错误: 没有可用的磁盘空间。

没有足够的连续可用的磁盘空间来完成当前的操作。对 C-ISAM 程序,如果正在使用
事务日志,滚回当前事务。腾出一些可用的磁盘空间并重新运行程序。对 SQL产品,
如果可能的话,滚回当前事务。与系统管理员联系以给数据库获得更多的磁盘空间。

-132 ISAM错误: 行尺寸太大。

单一行的尺寸极限是OnLine所支持的磁盘页大小。用不同的方法来定义表,以使得每
一行短一些。考虑把该表分割成两个或更多的表,或使用更加紧凑的数据类型。

-133 ISAM错误: 审计跟踪已存在。

ISAM处理器被要求以一种与审计跟踪不兼容的方式对文件进行操作,但是该文件的审
计跟踪已经存在了。对C-ISAM程序,在审计跟踪存在时,你不能调用iscluster。首先
用AUDSTOP方式调用isaudit。对 SQL产品,在一个表有审计跟踪时,你不能给该表建
立聚类的索引,先使用DROP AUDIT命令取消审计跟踪。

-134 ISAM错误: 没有更多的锁。

ISAM处理器需要锁定一行或一个索引页但是已没有可用的锁了。一个操作所需要的锁
的个数主要取决于在一个事务中改变的行的个数。你可以通过减少每个事务所修改的
行数来减少一个操作所需的锁的个数,或通过锁定整个表来代替锁定行。可用的锁的
个数根据你所使用的实现可能在下面三个位置之一被配置:操作系统核心;共享内存
段;或是OnLine。向你的系统管理员咨询如何获得更多的锁。

-135 ISAM错误: tblspace不存在。

这个错误可能表明根的dbspace控制信息被损坏。这是一个严重的错误,需要从档案上
恢复系统。简单地说,滚回当前的事务并且终止应用程序。然后OnLine管理员应该
运行tbcheck或oncheck实用工具。

-136 ISAM错误: 没有更多的区间

OnLine数据库服务器需要给一个表增加一个区间,但是不能做到这一点。或者,在
dbspace中没有足够的磁盘空间,或者,该表已被给定了一个可允许的扩展数的最大
值。OnLine管理员可以按如下方法确定原因:

1. 确定表的tblspace数目。这个值为该表在systables表中所对应的
partnum列值。

2. 将tblspace数目转换成16进制并提取其最高的两位数字(高字节)。
这个大块号指出该表所在之处。

3. 使用tbstat或onstat实用工具的-t选项来找出这个表的磁盘使用情 况。
特别注意报告的npages(可用的磁盘页),nused(已使用的磁盘页)和
nextns(区间个数)的值。

如果nused小于npages并且nextns很大(200以上),那么表就拥有过多的区间。每个表
可以拥有的区间数的上限在200到50之间,该上限随表的定义和使用的磁盘页大小的
不同而不同。重新分配表,使用较少但是较大的区间。把表的数据卸载到一个平文件
上,取消该表,重新建立表,指定第一个区间大小应足够装入它现在所有的数据,下
一个区间大小在当前大小的四分之一和六分之一之间。然后把数据重新装入到表中。

如果nextns比较小或是npages和nused之间的差距比表的下一个区间还要小,表所在的
dbspace没有足够的磁盘空间。使用步骤2的大块号和DB-Monitor或ON-Monitor的
Chunks显示来确定dbspace,然后给该dbspace增加一个新的大块。

-137 ISAM错误:大块表溢出。

OnLine管理员可以看到这个错误。OnLine数据库服务器被配置成只能处理一定数目的
磁盘大块。这个最大数目的极限已经达到,所以这个大块不能被增加。增加TBCONFIG
或ONCONFIG文件的CHUNKS参数并初始化共享内存。

-138 ISAM错误: dbspace表溢出。

OnLine管理员可以看到这个错误。OnLine数据库服务器被配置成只能处理一定数目的
dbspace。这个最大数目的极限已经达到,所以这个dbspace不能被增加。增加
TBCONFIG或ONCONFIG文件的DBSPACES参数并初始化共享内存。

-139 ISAM错误: 日志文件表溢出。

OnLine管理员可以看到这个错误。OnLine数据库服务器被配置成只能处理一定数目的
逻辑日志。这个最大数目的极限已经达到,所以这个日志不能被增加。增加TBCONFIG
或ONCONFIG文件的LOGSMAX参数并初始化共享内存。

-140 ISAM错误: 全局部分不允许存取。

这个错误仅在VMS操作系统下发生。在初始化共享内存时发生了一个内部错误。如果错
误重复发生,请记录所有的的环境并与Informix技术支持部联系。

-141 ISAM错误: tblspace表溢出。

OnLine数据库服务器被配置成只能处理一定数目的打开的tblspace(大致与表对应)。
现在已经达到了这个tblspace数目的极限,所以这个语句中使用的表不能被打开。简
而言之,滚回当前事务并在有较少的并发操作进行的情况下重新执行。为了防止再次
出现这个错误,OnLine管理员应配置系统使之可以处理更多的打开的tblspace。
TBCONFIG或ONCONFIG文件中的TBLSPACES参数设置了这个极限。DB Mornitor或
ON Mornitor Profile显示的ovrtable计数反映了这个错误发生的次数。

-142 ISAM错误: tblspace页溢出。

出现一个内部错误(可能已经过时)。如果该错误重复出现,请记录下所有的环境并与
Informix技术支持部联系。

-143 ISAM错误: 侦测到死锁。

OnLine数据库服务器在你的需求和其他并发的用户需求之间侦测到一个即将发生的死
锁。每个用户都在等待一个资源(一行或一磁盘页),而该资源又被链中的其他用户所
要求;如果你需求的操作继续下去,这条链将闭合起来,所有要求都将陷入死锁。简
单地说,处理方法与错误-107(记录被锁定)相同:滚回当前事务并在一定延时后重新
执行。为防止再次出现此错误,检查使用同一个表而且并发执行的应用程序的设计。
有很多设计策略可以尽量减小出现死锁的概率。

当INFORMIX-STAR是活跃的并且你的应用程序正在同时使用这一系统和其他系统的表
时,死锁检测不再是决定性的,而是概率性的,与另一系统上等待资源的延时长度有
关。OnLine管理员可以设置延时的长度,超过该延时则认为发生了死锁。

-144 ISAM 错误: 键值被锁定。

当前的操作插入一个带有某主键值的行,或是将一行更新为带有某一主键值,但是一
个尚未提交的事务已从索引里删除该键值。这个错误只有在锁定方式设置为NOT WAIT
的情况下才会出现。处理方法与错误-107(记录被锁定)相同:滚回当前事务,在一段
延时后重新执行。如果其它事务已提交,锁定不再存在。如果其它事务滚回,该键存
在,这个操作将得到一个重复键错误。

-145 ISAM错误: 系统没有磁盘镜像。

OnLine管理员可以看到这个错误。OnLine系统没有被初始化成支持磁盘镜像的。在你
能够增加一个镜像大块之前,你必须重新初始化"初始磁盘参数",在标有"镜象"的字
段处选Y。这个动作实现了对磁盘镜像的支持。

-146 ISAM错误: 这个磁盘的另一个拷贝现在被禁止或是不存在。

OnLine管理员可以看到这个错误。在使一个大块脱机之前必须使这个镜像对的另一个
大块成为联机状态。

-147 ISAM错误: 正在进行归档。

OnLine管理员可以看到这个错误。在进行归档的时候你请求的行动不能被执行。例
如,在归档期间你不能增加一个日志或一个镜像。取消归档操作或是等到归档结束,
然后重新发出该命令。

-148 ISAM错误: dbspace不空。

OnLine管理员可以看到这个错误。在一个dbspace中的所有表都被取消之前,你不能删
除这个dbspace。使用带有-pe选项的tbcheck或oncheck实用工具来寻找剩余的表的名
字;它会按大块列出dbspace内的表。

-149 ISAM错误: INFORMIX-OnLine daemon不在执行。

你的应用程序正在与一个OnLine数据库服务器通讯,但数据库服务器不在执行中。当
下一次启动时,OnLine系统进行快速恢复并将你的当前事务滚回。结束你的应用程序
并与OnLine管理员联系,看看发生了什么情况以及什么时候数据库服务器能重新
启动。

-150 超越了INFORMIX 演示版的限制。

你正在使用数据库服务器的一个演示版本。这个版本对于其能够管理的表的数目和表
的大小都有严格的限制。当前操作使得它超越了其中的一个限制。请与你的Informix
代理联系购买本软件的正式产品版本。

-151 ISAM错误: 在varchar长度字段的值不合法。

在磁盘上用于表示VARCHAR长度的某个VARCHAR字段的前导字节比该字段在建立时
所定义的最大长度还要大时,就会发生这个内部错误。如果错误重复出现,请参考
“Informix-OnLine管理员指南附录B "的“陷井错误”以得到进一步诊断。
请就诊断信息与 Informix 技术支持部联系。

-152 ISAM错误: 从远程进程接收的信息类型不合法。

这个内部错误不应出现。记录下正在使用的网络软件的所有细节,以及在这台及其它
主机系统上使用的数据库服务器的版本号。如果错误重复出现,请记录所有的环境并
与Informix技术支持部联系。

-153 ISAM错误: 不是在ISMANULOCK方式下。

ISAM处理器被请求锁定或解锁当前文件(表),但是该文件并未以适当的方式打开。对
C- ISAM程序,查看isopen的使用并确保在打开一个手工锁定的表的时候,ISMANULOCK
标志已被传递。如果错误重复出现,请记录所有的环境并与Informix
技术支持部门联系。

-154 ISAM错误: 锁定因超时而失效。

这个网络操作已被暂停,等待另一个数据库服务器的响应的时间已经超过了最长的等
待时间。INFORMIX-OnLine 动态服务器假定出现了分布的死锁,用户的需求在等待一
个其它系统中的某个用户锁定的资源,而那个用户在等待这个用户所拥有的某些东
西。滚回当前事务,在一段延时后重新运行。如果这个错误经常出现,要求OnLine管
理员调整死锁超时的时间间隔的长度。

如果一个显式的等待时间超时,也会返回这个错误代码;就是说,如果你有语句SET
LOCK MODE TO WAIT 3,你对某个锁定的需求被放在队列中超过3秒,那么该操作以这
个ISAM错误代码结束。

-155 ISAM错误:基本的和镜像大块是坏的。

基本的大块(以及镜像大块,如果存在的话)是无法使用的。滚回当前的事务并结束应
用程序。与OnLine管理员联系。必须定义新的磁盘大块,然后必须从磁带上恢复
系统。

-157 ISAM错误: 被中断的ISAM调用。

被侦测到的来自客户进程的中断终止了操作。重新开始该操作。

-158 ISAM错误: SMI 伪表中不允许的操。作

你试图进行一个在系统监视界面(SMI)伪表中不支持的SQL操作。试试其它操作。

-159 ISAM错误: 无效的整理序列。

你正试图使用一个不被支持的或是与最初用来建立ISAM文件的序列不匹配的整理
序列。使用islanginfo()来确定ISAM文件的语言。

-160 ISAM错误: 在任何时候只能同时打开一个blob。

这个内部错误不应该发生。数据库服务器对一行调用了两次blob管理器的isbopen。
如果错误重复出现,请记录所有的环境并与Informix 技术支持部联系。

-161 ISAM错误: 没有打开的blob。

这个内部错误不应该发生。数据库服务器没有先调用isbopen就已调用一个blob管理器
函数。如果错误重复出现,请记录所有的环境并与Informix 技术支持部联系。

-162 ISAM错误: BlobSpace不存在。

造成这个错误的最有可能的原因是当前语句试图使用子句"IN blobspace"定义一个
BYTE或TEXT字段,但是没有定义给定名字的blobsapce。然而,如果blobspace
的拼写正确并且存在,那就可能是由于在根dbsapce保留的页遭到了损坏。在这种情况
下,OnLine管理员应该运行带有-cr选项的tbcheck或oncheck实用工具来检查情况。
如果语句并未引用blob字段,可能是根dbspace已满或被损坏;与OnLine
管理员联系以获得进一步的帮助。

-163 ISAM错误: 开始和结束页时间戳不同。

OnLine数据库服务器报告了数据库损坏的迹象。每个磁盘页在两端都有时间戳,在从
磁盘上读出该页时,这两个时间戳应该相同。这个数据完整性测试的失败表明或是有
一个磁盘页没有被完全写入磁盘,或是该页在磁盘或内存中被部分地覆盖了。在任何
情况下,都应滚回当前的事务并停止应用程序。然后通知OnLine管理员运行tbcheck
或oncheck实用工具以获得有关失败的更进一步的信息。

-164 ISAM错误: Blob时间戳不正确。

这个操作返回了一个不合法的BYTE或TEXT值。可能是数据页已被损坏。滚回当前的事
务。请OnLine管理员运行带有-D选项的tbcheck或oncheck以获得关于此问题的进一步
的信息。

如果程序正在进行Dirty Read或Committed Read隔离,这个错误代码表明可能有其它
进程或线索已经删除了该BYTE或TEXT值,但该值所在的页又部分地被重新分配给了一
个无关的值。一个使用Dirty Read隔离的程序可以读取已被删除但该删除还未被提交
的行。如果删除已经提交,而程序正在读取BYTE或TEXT值,且如果分配给该值的空间
被其它程序重新使用,就可能返回这个错误代码。

在使用Committed Read隔离时,程序将看不到已被标为删除的行;但是对没有正在被
读取并修改的行并不锁定。在取得一行后,第二步才读取BYTE或TEXT数据。在这个漫
长的步骤中,其它程序可能删除该行,并提交删除,blobspace也可能被重新使用。要
判断是否出现了这种情况,程序应停止处理BYTE或TEXT的值并重新读取该行。如果程
序不能读取该行中的non-blob值,那么该行已被删除。如果该行还可以被读取,说明
blobspace已被损坏。

-165 ISAM错误: Blob字段不存在。

这个内部错误不应出现。数据库服务器已为一个未被定义为BYTE或TEXT的表字段调用
了blob管理器的isbcreate函数。如果错误重复出现,请记录下所有的环境并与
Informix技术支持部联系。

-166 ISAM错误:BlobSpace满。

这个操作试图插入或修改一个BYTE或TEXT字段,但是在存储字段的blobspace 中没有
足够的空间。滚回当前事务并结束应用程序。请与OnLine管理员联系,要求给这个
blobspace增加一个大块的磁盘空间。

在BYTE和TEXT值被删除或替换时,它们在blobspace中所占用的页只有在该事务出现
的逻辑日志被释放后才能重新被使用。一个逻辑日志在它已被备份到磁带上并且在该
日志中的所有事务都被关闭后才能被释放。

-167 ISAM错误: BlobPage大小不是PAGESIZE的倍数。

OnLine管理员可以看到这个错误。在定义一个blobspace时,你必须指定页的大小,它
必须是系统页大小的整数倍。系统页大小是在OnLine第一次初始化时在参数屏幕中设
置的。

-168 ISAM错误: 归档阻塞了分配BlobPage。

在生成一个联机档案的时候,从blobspace中分配磁盘页的操作被冻结。在归档开始
时,包含数据的blobpage在它们可以被写入档案磁带前不会被释放或被新的blobpage
覆盖。一旦一个blobspace大块中的所有使用过的blobpage都已被归档,在该大块中
分配blobpage的工作就可以重新开始。在归档时,正常的行数据可以继续被改变,因
为被改变的dbspace页可以在任何时候被写入,或是重写到磁带上。

-169 ISAM错误: 在增加大块的操作被记录到日志中之前,不能从大块中分配BLOB
页。

通过增加一个新的大块来扩展一个blobspace时,在日志记录了这个增加大块的操作之
前,不能分配页。如果不强行制定这个规则,在恢复中就可能出现的某些异常情况。
不必等到日志文件已满,你就可以通过运行带有-l选项的tbmode或onmode
实用工具来强制一个开关指向下一个日志文件。

-170 ISAM错误:不合法地使用blobspace。

你试图给blobspace增加一个日志。你只能给dbspace增加日志。

-171 ISAM错误:发现ISAM文件格式改变。

一个使用特定锁定方法或索引结点大小的程序试图存取一个使用另外的锁定方法或索
引结点大小建立的ISAM文件。

如果你正在从使用不同索引结点大小的平台上移植文件,你必须对所有ISAM文件(.dat
和.idx)运行带有-s 选项的实用工具bcheck或secheck来重新设置索引结点大小。

对INFORMIX-SE,如果你在使用不同锁定方法的平台之间移植应用程序的话,你必须在
你存取 ISAM文件时设置环境变量RESETLOCK以转换它们。如果时间允许,你可以通过
在给定的数据库中运行UPDATE STATISTICS,这将使你能够存取该数据库的所有文件。

对C-ISAM应用程序,如果你在使用不同锁定方法的平台之间移植应用程序的话,你必
须在你存取C-ISAM文件时设置环境变量RESETLOCK以转换它们。

-172 ISAM错误: 非期望的内部错误。

你遇到了一个未预料到的内部事件。咨询online.log,看看OnLine的诊断是否保留了
有关这一事件的更多信息。如果错误重复出现,请参考Informix-OnLine“管理员指南
附录B "的“陷井错误 ”以得到进一步诊断。请就诊断信息与 Informix
技术支持部联系。

-173 ISAM错误: 在逻辑日志备份时发生了错误。

这个一般性信息表明逻辑日志备份失败。SQL API也包含了与这个错误有关的有用的
错误文本。

-174 ISAM错误: 在档案备份时发生了错误。

这个一般性信息表明档案备份失败。SQL API也包含了与这个错误有关的有用的错误
文本。

-175 ISAM错误:在物理恢复期间发生了错误。

这个一般性信息表明物理恢复失败。SQL API也包含了与这个错误有关的有用的错误
文本。

-176 ISAM错误:在逻辑恢复期间发生了错误。

这个一般性信息表明逻辑恢复失败。SQL API也包含了与这个错误有关的有用的错误
文本。

-178 ISAM错误: 数据库是锁定的;对日志模式的改变未完成。

提出一个改变数据库日志状态的请求。在对数据库使用的所有dbspace和blobspace
做了0级归档操作之前,对数据库的存取操作被阻塞。

-179 ISAM错误: 没有可用的磁盘空间用于排序。

在进行排序时,OnLine没有找到足够的连续可用的磁盘空间来建立所需要的临时文
件。你可能是因为磁盘空间不足,在再次运行程序前应提供较多的可供使用的磁盘空
间。你可能是在DBSPACETEMP中指定临时dbspace或在PSORT_DBTEMP中指定目录
名时犯了错误。检查你在DBSPACETEMP中指定临时空间名时的拼写。如果你指定了
多重的临时dbspace,检查你是否使用了冒号(或是逗号(,)作为分隔符。

-181 ISAM错误: 没有光盘子系统连接。

目前没有光盘子系统。这通常意味着你在INFORMIX-OnLine 动态服务器上请求了一个
光盘操作,但是INFORMIX-OnLine 动态服务器正在没有INFORMIX-OnLine/Optical
配置的情况下工作。

-182 ISAM错误: 重复的光盘BLOBSpace名。

已有一个blobspace用相同的名字被定义为一个光盘族名。

-190 ISAM错误: 事务表溢出。

在事务表中不再有可供使用的插槽。要查看该表,运行带-x 选项的onstat。

-191 ISAM错误: 没有此大块。

指定要取消的大块不存在。

-192 ISAM 错误: 不能取消第一个大块。

dbsapce或blobspace的第一个大块是永远不能作为取消对象的,选择另一个大块。

-193 ISAM 错误: 大块忙。

逻辑恢复不能前滚一个“大块增加”操作,因为该大块已存在。当从dbspace或
blobspace中取消了该大块,没有进行0级备份操作就在另一个dbspace或blobspace
中重新使用该大块时,就会产生这个错误。

-194 ISAM 错误: 大块不空。

一个大块不空因此不能被取消。

-196 ISAM 错误: 在临时的dbspace中不允许的操作。

在临时的dbspace中执行的一个操作要求使用临时dbspace不提供的功能(很可能是日
志)。使用一个非临时dbspace来执行这一操作。

-197 ISAM 错误:新近附加的分区;不能对写或日志打开。

如果这个内部错误重复出现,请记录下所有情况,并与 Informix 技术支持部联系。

-198 不能变更表。在进程中表有太多现场变更。

Informix 将未完成的现场 ALTER TABLE 要求数限制在 255。在第 1 个现场表变更完
成之前就要求第256 个现场表变更。完成是指第 1 个现场表变更中表的所有行已在物
理上变更。

为了从这个错误恢复过来,你必须采取以下步骤之一:

* 等到第 1 个现场表变更完成,并发出另一个现场 ALTER TABLE 语句。

* 改变 ALTER TABLE 语句的格式以要求一个不把字段增加到表末的变更。
这样一个语句将使用老算法而不是现场变更算法。

* 执行表中每个行的更新以强制完成未完成的变更。因为在更新行时只按最近
方式修改,所以,在物理上强制完成现场变更就是更新表中每一行。为了得到这个
结果使用哑更新,其中表的每个字段都设置成其自身值。哑更新强制行在进程中按
最近方式更新而不实际改变字段值。行总是按最近方式更新,所以遍历一次表更新
所有行将完成所有未完成的变更。

-199 Smart Disk错误。

Smart Disk系统发生了错误。查看伴随的信息以获得更多信息。

-200 标识符太长。

SQL语句中的标识符的长度必须小于或等于18个字符。检查语句中的标识符是否超长,
是否没有标点错(例如一个遗漏的空格或逗号),不要使两个名字连成了一个。

-201 发生了一个语法错误。

这个通用错误信息指出SQL语句形式的错误。检查是否有遗漏的或多余的标点符号
(例如,遗漏的或多余的逗号,在子查询的附近遗漏了括号等等),关键字拼写错误
(例如把VALUES写作VALEUS),关键字误用(例如在INSERT语句中的SET,子查询中
的INTO),关键字次序错(例如把"NOT value IS"写作"value IS NOT"的情况),或是
使用保留字作为标识符。

提供"完全遵循 NIST "的数据库服务器不保留任何字;在这类数据库服务器下工作的
查询在用于Informix 数据库服务器较早版本时可能会失败并返回错误 -201。

-202 在语句中发现一个不合法的字符。

这个语句中嵌入了不能被解释为SQL语句的一部分的字符。如果程序构造了该语句,这
个字符可能是一个不可打印的控制字符。确保语句中仅含有可打印的ASCII字符并重新
执行之。

-203 在语句中发现一个不合法的整数。

在期待出现一个整型值的地方出现了一个不可接受的数值常数。检查该语句,寻找那
些包含小数点或字母 e ,或是大于2,147,483,647(231-1),但应是整型的数字。

-204 在语句中发现不合法的浮点数。

一个所含标点与浮点数类似的数值常数(有一个小数点和/或一个以e打头的指数)
是不可接受的。可能是指数大于可处理的值。

-205 如果视图有基于多个表的分组、聚集,不能使用ROWID。

关键字ROWID代表仅存在于简单表中的一个虚拟字段。这个信息引用了一个表的
ROWID,但该表是由两个或两个以上的表通过含有聚集函数,分组或联结的选定操作
所构成的视图。这类查询结果没有ROWID字段。因此该视图尽管表现得象一个表,也
同样不含有ROWID。要在查询中使用ROWID,你必须对构成视图的表进行查询。

-206 指定的表<表名>;不在数据库中。

检查语句中的表名。如果它们的拼写与你所希望的相同,检查你是否正在使用正确的
数据库。如果是这样的话,该数据库一定已被改变过了。可能是该表已被重新命名或
被取消了。你可以通过查询systables来找出数据库中的所有表的名字。

-207 不能更新声明在多个表上的游标。

在这个语句中所使用的游标已说明FOR UPDATE,但有一个SELECT语句,它会合并二个
或更多的表格。这个动作是不受支持的;数据库不知道如何分配新值到多重表格中。
如果你用游标来说明SELECT语句,就必须修改它本身或是FOR UPDATE子句。如果程序
建立了SELECT语句,并且将它与游标动态地相关联,则程序应告知用户不得在此应用
程序中使用多重表格SELECT语句。(这条信息仅出现在4.0版或更早的版本)。

-207 不能说明一个SELECT INTO语句FOR UPDATE。

当说明一个游标时,你不能同时使用INTO和FOR UPDATE子句。为了使用这个游标来修
改选定的行,省略INTO子句。或者在FETCH语句中使用INTO子句(或是在4GL中的
FOREACH语句)。

-208 在查询处理中分配内存失败。

数据库服

论坛徽章:
0
2 [报告]
发表于 2005-05-20 14:47 |只看该作者

贴个Informix错误代码中文解释供大家参考

-208 在查询处理中分配内存失败。

数据库服务器需要分配数据空间内存以处理查询,但不能得到内存。这个错误可能反
映了硬件上的限制,或是操作系统配置上的限制,或是临时的空间短缺。

在一段延迟后再次执行该查询。如果仍然失败,向你的系统管理员咨询。如果可能的
话,修订你的查询,联结较少的表或是对较少的字段排序或分组,或是使用两个或多
个语句来完成查询。在DOS系统中,退出到操作系统命令行,释放一些磁盘空间,或是
减少你的程序的复杂性,并重新提交你的程序。

在5.01后的版本中,只有这条错误信息通知你数据库服务器不能分配内存。

-209 不兼容的数据库格式。

一个过时版本的数据库软件建立了这个数据库。转换这个数据库才能被当前的软件处
理。使用dbupdate实用工具。在使用数据之前你必须运行它(从Version4.0开始这条信
息已不存在)。

-210 显式的路径名太长。

这个语句包含的一个文件路径名超过了64个字符的最大长度。检查该语句以确定
路径名是否确实太长;也可能是一个标点错误使得语句的其它部分也被包含进了
路径名里。如果不是这样,请重新放置文件或者用较短的路径名重新命名
某些目录名。

-211 不能读取系统目录<目录表>;。

数据库服务器在处理大多数语句时参照系统目录表。当不能读取这些重要的表时就产
生了严重的错误。检查伴随的ISAM错误代码以获得更多的信息。错误的影响取决于正
在执行的语句和特定的表,如下所示。

* CREATE TABLE语句,systabauth不能读取;该表可以被建立,但不能象正常
情况一样授权给PUBLIC。

* DROP TABLE语句,systables不能读取;不做任何动作。

* DROP TABLE语句,sysviews不能读取;该表将被取消,但任何依赖于该表的
视图将不能被自动取消。

* DROP VIEW语句,sysviews不能读取;不做任何动作。

* DROP INDEX语句,systables或sysindexs不能读取;不做任何动作。

* DROP SYNONYM语句,systables或syssynonyms不能读取;不做任何动作。

* DROP DATABASE语句,systables不能读取;不做任何动作。

* START DATABASE语句,systables不能读取;不做任何动作。

* DATABASE语句,systables或sysusers不能读取;该数据库不被选中
(没有当前数据库,后来的操作见错误-349)。

其它语句可能在错误被侦测出来之前已经部分完成了。滚回当前的事务并调查错误的
原因。使用实用工具bcheck或secheck(INFORMIX-OnLine的tbcheck或INFORMIX-
OnLine动态服务器的oncheck)来检查或修复索引。如有必要,从备份和逻辑日志磁带
上恢复数据库。

-212 不能增加索引。

这个语句试图增加一个索引,可能是显式地通过CREATE INDEX,或是隐含地作为对多
个无索引表的SELECT的处理的一部分。不管在哪种情况下,某些错误阻止了索引的建
立。请检查伴随的ISAM错误代码以获得更多的信息。产生这个问题的一个常见的原因
是磁盘空间不足。

-213 语句被用户中断。

数据库服务器接收到用户发出的一个中断信号,可能是由于用户按下了中断键(通常是
Delete键或Control-C)。语句提前结束。程序应滚回当前的事务并友好地结束。如果
该语句可能修改表,交互式用户应该执行ROLLBACK WORK以取消任何不完全的修改。

-214 不能给表<表名>;删除文件。

数据库服务器不能完全地删除该表。检查伴随的ISAM错误代码以获得更多的信息。
操作系统的文件访问权限问题,只读文件和硬件错误可能引发这个错误。

-215 不能为表<表名>;打开文件。

数据库服务器不能打开操作系统文件或存储该表处的文件。请检查伴随的ISAM错误
代码以获得更多的信息。操作系统的文件访问权限问题,内存不足和硬件错误可能
引发这个错误。

-216 不能删除文件的ISAM索引。

数据库服务器不能完全地删除一个索引。检查伴随的ISAM错误代码以获得更多的
信息。操作系统的文件访问权限问题,只读文件和硬件错误可能引发这个错误。

-217 在查询中未在任何表内发现字段<字段名>;。

该字段名出现在这个查询的选定列表或是WHERE子句中,但在表中未定义。检查选定
的表的名字是否拼写得与你所预期的相同。如果是这样的话,或是你正在使用不正确
的数据库,或是该数据库已被改变;可能是某个字段已被改名或清除。为了列出表内
全部字段,见对错误-328的讨论。

-218 同义字<同义字名>;未找到。

同义字在这个数据库中未被定义。检查同义字名是否拼写得如你所预期的。检查你正
在使用你所希望用的数据库。如果是这样的话,该同义字可能被取消了。该同义字可
能是在它所在的表被取消时被自动取消了。为了显示所有被定义的同义字,查询
systables,如下所示:

SELECT tabname FROM systables WHERE tabtype = `s'

-219 通配符匹配不能用于非字符类型。

这个语句的WHERE子句中包含了对一非字符字段的测试,该测试使用了关键字LIKE
或MATCHES,并使用了代表多重字符的特殊字符,(例如在MATCHES中使用星号和问
号,或是在LIKE中使用百分号和下划线)。只对数据库中被定义为CHAR或VARCHAR
的字段才使用这类测试。不提供自动的数据转换。检查WHERE子句中的字段正是你所
希望的。如果是这样的话,表的定义可能被修改过了。

-220 查询中没有FROM子句。

每一个SELECT语句必须包括一个FROM子句来为表或将被查询的表命名。检查FROM
是否拼错,或有额外的分号意外插在语句尾端。即使只选择一个常数,或选择与任何
表格无关的函数值(例如USER或TODAY等),你也必须为表命名。你可以从系统目录
选择一已知的行,例如:

SELECT 'today is', TODAY,'and I am', USER FORM systables WHERE tabid=
100

数据库中,第一个用户定义的表格的 tabid值总是等於100,因此,如果有表格已
被定义,这个查询总会回复一行。(在4.1版及以后版本,若没FROM子句,会发出-201
语法错误。)

-220 不能开始保存点。

从版本4.1开始可以侦测到的内部错误。如果该错误再次出现,请记录下所有的环境并
与Informix 技术支持部联系。

-221 不能建立新表<表名>;的临时文件。

数据库服务器不能建立一个临时磁盘文件。该文件应在环境变量DBTEMP指定的目录下
被创建。如果DBTEMP没有定义,在缺省情况下,数据库服务器在根目录下搜索名为tmp
的子目录,并在该目录下建立临时磁盘文件。检查伴随的ISAM错误代码,并查看操作
系统信息以获得更多的信息。可能是你的帐户没有在该目录下写的许可,也可能是磁
盘已满。从版本5.01开始,INFORMIX-SE数据库服务器就已使用环境变量DBTEMP,但
INFORMIX-Online动态服务器没有使用。

-222 不能写新表<表名>;的临时文件。

数据库服务器建立了一个临时磁盘文件,但当试图写该文件时发生了一个错误。请检
查伴随的ISAM错误代码,并查看操作系统信息以获得更多的信息。在UNIX系统中,
该文件应在环境变量DBTEMP所指定的目录下被建立(缺省值为 /tmp);在DOS系统中,
该文件应位于当前目录下。可能是磁盘已满,或是发生了硬件错误。从版本5.01
开始,INFORMIX-SE数据库服务器就已使用环境变量DBTEMP,但INFORMIX-Online
动态服务器没有使用。

-223 在FROM子句中重复的表名<表名>;。

表名在关键字FROM之后的列表中出现两次。检查语句看看你是否想第二次命名其它
一些表。如果你的意图是使表自连接,第二次和以后表的实例必须使用表的别名。
下例表明查找有相同名字的顾客的一种方法:

SELECT main.lname, main.customer_num, sub.customer_num
FROM customer main, customer sub
WHERE main.lname = sub.lname AND main.rowid != sub.rowid

在使用表的别名时(上例中的字main和sub),该表可以两次或多次选择。

-224 不能打开事务日志文件。

数据库服务器不能打开进行事务日志登录的文件。在这个文件修复之前,不能启动任
何事务处理。(在符合ANSI标准的数据库中,什么事情也不能做;在其它数据库中,
只能做查询。)对INFORMIX OnLine动态服务器,向OnLine管理员报告这种问题。对其
它数据库,检查伴随的ISAM错误代码,查看操作系统错误信息,它可能给出更多的信
息。START DATABASE语句指定了到日志文件的路径。如果文件已经删除,可以重新建
立它作为一个空文件。如果路径已经改变,可以发布新的START DATABASE语句来重新
定义它。

-225 不能为系统目录<表名>;创建文件。

数据库服务器(不是OnLine)试图对系统目录创建表,可能作为CREATE
DATABASE语句的一部分。可能存在主机操作系统禁止的问题。更多的信息请检查伴随
的ISAM错误代码,查看操作系统错误信息。磁盘空间不足和操作系统文件访问权限的
问题可能产生这个问题。

-226 不能为系统目录<表名>;创建索引。

数据库服务器(不是OnLine)试图对系统目录创建表,可能作为CREATE DATABASE语句
的一部分。它创建该表但存在主机操作系统禁止它建索引的问题。更多的信息请检查
伴随的ISAM错误代码,查看操作系统错误信息。磁盘空间不足可能产生这个问题。

-227 禁止对ROWID进行DDL操作。

这条语句试图改变名为ROWID的字段。该字段是每个表的一部分,除被分段存储的表
外。你可以用SELECT语句中选择它并在WHERE子句中比较,但不可以用DDL语句更改
它。

-228 禁止对ROWID进行UPDATE或INSERT。

这条语句命名字段列表中的字段ROWID用于插入或修改。rowid是不能修改的固有特
性。你可以在SELECT语句中选择它并在WHERE子句中比较,但不可以语句修改它的内
容。

-229 不能打开或创建临时文件。

数据库服务器不能创建一个临时磁盘文件。应该在由DBTEMP环境变量指定的目录(或
在UNIX系统上由缺省指定的/tmp)中创建临时文件。检查伴随的ISAM错误代码,查看
操作系统错误信息,它可能给出更多的信息。可能你的帐户已经没有在那个目录中写
的权限,可能磁盘已满。从版本5.01开始,INFORMIX-SE数据库服务器就已使用环境变
量DBTEMP,但INFORMIX-Online动态服务器没有使用。

-230 不能读取临时文件。

数据库服务器在由DBTEMP环境变量指定的目录(或在UNIX系统上由缺省指定的/tmp)
中创建临时文件,但是在试图把文件读回时发生错误。检查伴随的ISAM错误代码,
查看操作系统错误信息,它可能给出更多的信息。可能出现了硬件故障,可能另一个
用户意外地删去临时文件。从版本5.01开始,INFORMIX-SE数据库服务器就已使用
环境变量DBTEMP,但INFORMIX-Online动态服务器没有使用。

-231 不能用关于表达式的distinct执行聚集函数。

这条语句在聚集函数内选择DISTINCT (表达式)。这个动作是不支持的。选择
DISTINCT 值和其它字段进入一个临时表,然后从那个表选择ALL运用聚集函数。

-232 SERIAL字段<字段名>;不能修改。

你不能用UPDATE语句中的数据类型SERIAL更改字段内容,即使修改的值是零。(在使
用INSERT语句时可以为序号字段指定零值;数据库服务器不理睬零而插入一个生成的
数。)修正语句以便只修改非序号字段。

-233 不能读取被其它用户锁定的记录。

其它用户已经锁定由这条语句选出的行。如果你交互地执行该语句,可以做两件事之
一。 可以等待一会儿再输入这条语句,或执行语句SET LOCK MODE TO WAIT,
之后你将很难再看见这条信息。

在一个程序中,你应该滚回当前事务处理,等待随机的间隔,再运行该事务。如果你
用WAIT的LOCK MODE运行事务,就能减少这种错误的频率,但它在某些情况下仍会出
现,例如当发现死锁时。该错误通常伴随一个ISAM错误代码,-107, -113, -134,
-143, -144或-154,程序可以对每种错误做出不同响应。

-234 不能插入虚拟字段<字段名>;。

这条INSERT语句指向一个视图,而不是一个真正的表,在视图中定义的一个字段实际
上是一个表达式的值。不允许对有这种字段的视图进行插入和修改。对视图所依赖的
真正的表运用INSERT。

-235 字符字段的宽度太大。

这条语句对宽度大于32,767的字段或宽度超过255的VARCHAR字段指定了CHAR
数据类型。如果你需要这种大小的字段,就使用TEXT数据类型,它允许无限长。
否则,检查语句是否印刷错误。

-236 在INSERT中字段数与VALUES的数目不匹配。

在INSERT语句中命名或采用的每个字段必须分别有值表达式。如果语句没有列出特定
的字段,检查表的定义,或字段的数量及其数据类型。也检查VALUES子句中表达式的
列表是否没有多余的或遗漏的逗点,它们可能会导致错误的赋值数量。要特别小心长
字符串和带括号的表达式。

-237 不能进行开始工作。

数据库服务器不能执行BEGIN WORK语句。更多的信息请检查伴随的ISAM错误代码。
在访问事务日志时可能发生问题。

-238 不能进行提交工作。

数据库服务器不能执行COMMIT WORK语句。更多的信息请检查伴随的ISAM错误代码。
在访问事务日志时可能发生问题。

-239 不能插入新行 — 在UNIQUE INDEX字段中有重复值。

正在被插入(或修改具有新的主键)的行在限制必须有唯一值的字段中,包含已经存
在的某些行的重复值。该行不能被插入。滚回当前事务处理,没有任何重复行后再执
行它。

-240 不能删除行。

数据库服务器不能完成DELETE语句的执行。滚回当前的事务处理;然后,检查伴随的
ISAM错误代码,得到更多的信息。

-241 不能进行滚回工作。

数据库服务器不能执行ROLLBACK WORK语句。更多的信息请检查伴随的ISAM错误
代码。在访问事务日志时可能发生问题。

-242 不能打开数据库表< 表名>;。

数据库服务器不能开始读取表。更多的信息请检查伴随的ISAM错误代码。问题可能是
在文件权限,硬件错误,或被损坏的系统目录等方面。除非ISAM错误代码或操作系统
信息指出其它原因,否则运行bcheck或secheck实用工具来检验文件的完整性。

-243 不能在表< 表名>;内定位。

数据库服务器不能对代表某表的文件内的实际行设置文件位置。更多的信息请检查伴
随的ISAM错误代码。硬件错误可能发生,或文件可能被损坏(截断)。除非ISAM
错误代码或操作系统信息指出其它原因,否则运行bcheck或secheck实用工具来检验文
件的完整性。

-244 不能按物理顺序读来取得下一行。

数据库服务器不能读取包含一个表的某行的磁盘页。更多的信息请检查伴随的ISAM
错误代码。可能硬件有问题,或表文件或索引文件可能被损坏。除非ISAM错误代码或
操作系统信息指出其它原因,否则运行bcheck或secheck实用工具来检验文件的
完整性。

-245 不能通过索引在文件内定位。

数据库服务器通过索引寻找数据行时遇到错误。更多的信息请检查伴随的ISAM错误
代码。表文件或索引文件可能被损坏。除非ISAM错误代码或操作系统信息指出其它
原因,否则运行bcheck或secheck实用工具来检验文件的完整性。

-246 不能按带索引的读得到下一行。

数据库服务器通过索引寻找数据行时遇到错误。更多的信息请检查伴随的ISAM错误
代码。表文件或索引文件可能被损坏。除非ISAM错误代码或操作系统信息指出其它
原因,否则运行bcheck或secheck实用工具来检验文件的完整性。

-247 前滚数据库失败。

数据库服务器不能提供审计跟踪来向前滚动数据库。更多的信息请检查伴随的ISAM
错误代码。

-248 不能提交保存点(savepoint)。

在版本4.1以上的产品中能侦测到这个内部错误。如果错误重复发生,请记录详细情况
并与Informix技术支持部联系。

-249 虚拟字段必须有显式名。

在选择INTO TEMP时你正在创建一个表。在用任何表时,临时表的字段必须都有名称。
当你选择单个字段时,临时表中的该字段接收相同的名字。当你选择表达式时必须提
供使用字段别名的名称,如下例所示:

SELECT order_num, ship_date, ship_date + 14 expected
FROM orders
INTO TEMP ord_dates

临时表ord_dates有三个字段,分别命名为order_num,ship_date和expected。同一原
则亦用于视图:每个字段必须有一个名字。当你从表中选出视图的每个字段时,根据
缺省,视图可以有相同的字段名。当你从表达式派生视图的任何字段时,所有字段必
须给出显式名称,如下例所示:

CREATE VIEW ord_dates(order_num, ship_date, expected) AS SELECT
order_num, ship_date, ship_date + 14 FROM orders

-250 不能从文件读取记录用于修改。

数据库服务器在修改之前不能得到某表的数据行。更多的信息请检查伴随的ISAM
错误代码。其它用户可能已经锁定该行或表,或者存在更严重的问题。

-251 ORDER BY或GROUP BY的字段号太大。

ORDER BY或GROUP BY子句使用字段顺序号,至少其中之一大于选择列表的字段数目。
检查你输入的子句是否正确,选择列表是否没有丢失项目。

-252 不能得到表的系统信息。

数据库服务器不能从一个或多个系统目录表读。更多的信息请检查伴随的ISAM错误
代码。除非ISAM错误代码或操作系统信息指出其它原因,运行bcheck或secheck实用
程序,检验文件的完整性。

-253 标识符太长 — 最大长度是18。

语句中的一个名字超过最大长度。检查名字的长度,并检查是否有印刷错误导致两个
名称一起运行。

-254 给出太多或太少宿主变量。

你在这条语句的INTO子句中命名的宿主变量的数量与写入该语句的"?"位置标识符的数
目不匹配。定位该语句的正文(在PREPARE或DECLARE语句中),并检验位置标识符的数
目。然后检查在INTO子句中的列表,看看哪个项目不正确。

-255 不在事务中。

数据库服务器不执行该COMMIT WORK或ROLLBACK WORK语句,因为没有执行BEGIN
WORK来启动一个事务。由于没有事务启动,你就不能够结束它。对数据库所作的任何
修改都固定不变;它们不能滚回但不需要提交。检查SQL语句的顺序,看看事务应该在
什么地方开始。

-256 事务不能用。

不能在这个数据库中开始一个事务,因为它没有事务日志。为了支持事务,必须启动
一个事务日志。使用INFORMIX-OnLine动态服务器时,OnLine管理员使用DB-Monitor
或ON-Monitor的Logical Logs菜单的Databases屏幕来开始一个事务日志。而使用其它
数据库服务器时,则用START DATABASE语句。

-257 关于最大语句数的系统限制超过 — 最大是<计数值>;。

数据库服务器只能为每个用户处理固定数量的准备SQL语句。这种限制包括用PREPARE
准备的语句和用DECLARE说明的游标。这个语句(PREPARE, DECLARE或PREPARE
IMMEDIATE)超过那个限制。该语句不被执行。FREE语句释放准备语句。检查程序逻辑
并修改它,以便在不需要时释放准备语句。

5.0版以后的数据库服务器没有这种限制。然而,必须与早先版本兼容的程序仍应在
这个限制之下使用FREE。

-258 系统错 — sqlexec 进程收到无效的语句标识符。

当前的语句(EXECUTE 或 OPEN)引用了一个准备的SQL 语句或者不存在的游标。
产生的原因可能是该语句标识符无效,或者该语句是准备好的、但被 FREE 语句
释放了。检查程序的逻辑,确保该语句中命名的语句或游标是有效的、是正确地
准备或声明好的、而且没有在这之前被释放掉。

如果程序成功地执行了一句准备的 DATABASE 语句,数据库服务器将自动释放这句
准备的语句。因此,如果释放了准备的 DATABASE 语句,会在FREE 语句上收到这条
错误信息。在这种情况下,可以不理睬它。

-259 游标没打开。

当前语句使用了一个游标但它没有被打开。检查程序逻辑看它在此之前为何不能执行
OPEN语句。结束事务的语句(COMMIT WORK和ROLLBACK WORK)也关闭游标,
除非游标被说明为WITH HOLD。

-260 不能执行已PREPARE的SELECT语句 — 必须使用游标。

虽然可以准备一条SELECT语句,但是能执行SELECT语句的唯一办法是把它的语句id与
一个游标联系(使用DECLARE语句)然后打开游标。

一个重要的例外是 SELECTINTO TEMP 语句,你可以执行它,却不能借助游标
使用它。

你可以用EXECUTE语句执行其它准备语句。如果你在写程序时已经知道这条SELECT
语句的内容,并且确知它只返回单一数据行,就可以把它嵌入程序。如果它必须在程
序运行时动态地准备,那么修改程序以通过游标来执行它。

-261 无法建立表<表名>;的文件。

通常,数据库服务器无法建立描述这个表的文件。检查附带的ISAM错误代码以获得更
多信息。此文件将用INFORMIX-SE建立在数据库dbs 目录下(除非你已提供了IN<路径
名>;语句)。它的文件名将以<表名>;的前几个字母开头,后面是三位数字和后缀.dat或
.idx。对于INFORMIX-SE,问题可能出在文件权限方面,或可能是磁盘满了。

INFORMIX-OnLine动态服务器允许分段存储,这会引起dbspaces的扩展使用。你需要检
查为该表指定的dbspace。如果没有指定的dbspace,那么建立数据库的dbspace将被使
用。为建立数据库,如果没有指定的dbspace,那么使用rootdbs。对于OnLine,指定
的dbspace可能不存在,或磁盘满了。

-262 没有当前游标。

这个内部错误不应该发生。记录使用中的网络软件的所有细节以及本台或其它主机系
统中的数据库服务器版本号。如果重复发生错误,请记录详细情况并与Informix技术
支持部联系。

-263 不能锁定行用于UPDATE。

这条语句失败,可能是命名游标的FETCH语句说明了FOR UPDATE,因为该语句取得的行
不能被锁定。请检查伴随的ISAM错误代码(通常是错误 -107, -113, -134, -143,
-144或-154)可获得更多的信息。有可能另一程序正在用该行(-107)或表(-113)。可
使用 SET LOCK MODE TO WAIT将消除这些错误,但检测死锁 (-143或-154)和锁定的表
满(-134) 仍会发生。

-264 不能写入临时文件。

数据库服务器在由DBTEMP环境变量指定的目录(或在UNIX系统上由缺省指定的/tmp)
中创建临时文件,但在试图向文件写入数据时会发生错误。检查伴随的ISAM错误代
码,查看操作系统错误信息,它可能给出更多的信息。可能已经有硬件故障,也可能
磁盘已满。从版本5.01开始,INFORMIX-SE数据库服务器使用DBTEMP环境变量,但
INFORMIX OnLine动态服务器不使用。

-265 装入或插入游标必须在一个事务内运行。

试图打开一个insert游标。这个数据库有一个事务日志。在这样的数据库中,在打开
用INSERT语句或用FOR UPDATE子句说明的游标之前,必须执行BEGIN WORK语句。
修正程序的逻辑,以便在打开游标之前程序开始一个事务。

在没有事务日志的数据库中也可确保程序工作,把程序按如下办法修改。紧接在执行
DATABASE语句之后,把SQLAWARN警告标志数组的第二单元的内容保存在SQL通信区中。

如果数据库没有使用事务,该单元将是空,而如使用事务,将包含字母W。在每一事务
逻辑上开始和结束点,测试保存的值。如果含有W,执行事务语句开始或结束一个事
务。

-266 UPDATE/DELETE游标没有当前行。

当前语句使用WHERE CURRENT OF <游标名>;子句,但该游标还没有与当前行发生联系。
要么从它被打开开始还没有执行FETCH语句,要么是最近的fetch发生错误,这样就没
有行返回。修正程序的逻辑,以便在执行这条语句之前总能成功地取得数据行。

-267 游标已经先释放,不能用。

FREE语句已释放在这条语句中命名的游标所连接的资源。在能够使游标之前,必须再
次准备与它相关联的SQL语句。如果游标用FOR语句说明,它的DECLARE必须被重新
执行。如果它用FOR一个语句的id说明,必须重新执行PREPARE语句。

-268 唯一限制<限制名>;违法。

在执行这条语句期间,重复的值引入受唯一性限制保护的字段。不允许有重复值的行
进入表中(不能插入或修改)。对于OnLine数据库服务器,在发现重复值之前由这条
语句做的任何改动已被滚回。(然而,在事务中先于语句的影响,如果有的话,仍然
起作用,必须明确地滚回或提交。)

-269 不能增加不接收null的字段<字段名>;。

这条语句申请有NOT NULL限制的新字段,然而,当某字段加到已有的表中时,null
值正好要被装入已存在的行中。必须定义包括这个字段的新表,然后从旧表把数据
INSERT这个表以便为这个字段提供合适的非null值。

-270 不能放在临时文件内。

数据库服务器在由DBTEMP环境变量指定的目录(或在UNIX系统上缺省指定的/tmp )
中创建文件,要在文件中定位(寻找)时碰到一个错误。检查伴随的ISAM错误代码,
查看操作系统错误信息以便获得更多的信息。可能是硬件故障,或另一个用户已经
截断文件。从版本5.01开始,INFORMIX-SE数据库服务器使用DBTEMP环境变量,
INFORMIX OnLine动态服务器不使用。

-271 不能把新行插入这个表。

这个问题可能有许多原因,包括锁定的表或满磁盘。更多的信息请查看伴随的ISAM
错误代码。

-272 没有SELECT权限。

创建这个表的人没有授予Select权限给你的帐户名或public。必须在表的所有者或DBA
授予这个权限后,你才能从该表选择数据。

-273 没有UPDATE权限。

创建这个表的人没有授予Update权限给你的帐户名或public。必须在表的所有者或DBA
授予这个权限后,你才能修改该表的数据行。

-274 没有 DELETE权限。

创建这个表的人没有授予Delete权限给你的帐户名或public。必须在表的所有者或DBA
授予这个权限后,你才能删除该表的数据行。

-275 没有INSERT权限。

创建这个表的人没有授予Insert权限给你的帐户名或public。必须在表的所有者或DBA
授予这个权限后,你才能向该表插入数据行。

-276 没有发现游标。

在这个语句中命名的游标没有在当前会话期中说明。当前会话期从一个DATABASE
语句到下一个DATABASE或CLOSE DATABASE语句之间运行。检查程序的逻辑保证它
在DATABASE语句之后执行这个游标的DECLARE语句。

版本5.01以后的数据库服务器不使用这条错误信息。

-277 UPDATE表<表名>;和游标的表不相同。

UPDATE WHERE CURRENT OF<游标名>;语句参考的表不同于用游标说明的SELECT语句
参考的表。请检查程序逻辑确保这一点:在通过游标进行修改时,它只修改游标正在
读的表。

-278 ORDER BY的字段太多。

此SELECT语句要求的字段超过数据库服务器所能支持的。这个限制视所用的数据库服
务器而定,但处理分类上都最多只到8个字段。更新这个语句以便要求较少的字段。

4.0及以後的版本对ORDER BY的字段数没有特别的限制。当执行排序操作时复杂的排
序工作会使数据库服务器用尽内存或磁盘空间。

-278 不能滚回保存点。

4.1及以后版本的产品能检测这一内部错误。如果反复发生错误,请记录详细情况并与
Informix技术支持部联系。

-279 不能授予或取消表或视图的数据库权限。

这条语句命名一个或多个数据库级权限 (CONNECT, RESOURCE和 DBA),但是它也使用
ON <表名>;子句。没有描述具体表的语句(不包含ON子句)必须授予或取消数据库级的
权限。表级权限如INSERT需要ON子句。这两种不能混合在同一语句中。

-280 带引号的字符串超过256个字节。

这个语句中有字符文字超过允许的最大值。审查该语句,检查其中所有带引号字符串
的长度和标点。可能遗漏两个引号,使两个短字符串成为一个长串。必须修改语句使
用更短一些的字符串。

-281 不能把索引加到临时表中。

检查伴随的ISAM错误代码,找出具体问题,然后查看操作系统错误信息以求得到更多
信息。可能是磁盘满了。

-282 发现一个引号没有相匹配的引号。

审查当前语句,检查带引号的所有字符串的标点。为了将引号放在文字字符串中,用
一些单撇号作为字符串的分隔符。如下例所示:

SELECT ' " ', fname, ' " '," ' ' ", lname, " ' ' " FROM customer

-283 发现没有终结的注释("{"和"}"不匹配)。

审查当前语句并查注释及带引号字符串的标点。可以使用大括号将注释插入SQL语句,
但大括号必须成对出现。或者,可以用双连字符附注释于行后。

-284 子查询实际不是返回一行。

用于表达式的子查询在文字值的位置上必须只返回单行和单个字段。在这条语句中,
一条子查询的返回超过一行,数据库服务器不能选择哪个返回值用于表达式。可使子
查询总是只返回一行。使用WHERE子句,对有唯一索引的字段测试相等性。或是只选择
统计函数。检查子查询并检查它们只返回一行。

这个错误在使用单一SELECT语句来检索多行时也可能发生。必须使用
ECLARE/OPEN/FETCH语句系列,或EXECUTE INTO语句来检索多行。

-285 无效的游标被sqlexec接收。

在这条语句中使用的游标没有适当地说明或准备,否则就是FREE语句已经释放它。
检查程序逻辑,保证游标已经说明。如果是,并且该DECLARE语句参考一个语句id,
检查被参考的语句已经准备。

-286 主键字段<字段名>;的缺省值是NULL。

作为主键一部分的字段不能有null作为它的缺省值。

-287 不能增加序列字段<字段名>;到表中。

不能将数据类型SERIAL的字段加到存在的表中。这样的字段不能含有null值,但当增
加一个字段时,数据库服务器必须把null值放入所有存在的行中。可以用三步增加序
列字段。首先用一个INTEGER数据类型增加该字段。然后把非null的、唯一值放入新字
段的每一行中,更新表。最后,使用ALTER TABLE MODIFY改变该字段的数据类型为
SERIAL。

-288 表<表名>;未被当前用户锁定。

这条UNLOCK TABLE语句命名一个还没有被锁定的表。如果你早些时候锁定该表,那么
它已经被解锁。在事务处理结束或数据库关闭时,表自动解锁。如果另一个用户锁定
表,你不能解开它的锁。

-289 不能以需求的方式锁定表<表名>;。

该表已经以排它方式锁定。必须在处理之前等待该表解锁。

-290 游标没有用FOR UPDATE子句说明。

这条语句试图用未被说明用于修改的游标来修改。由于为防止程序错误而设计的安全
度量和性能特征的原因,数据库服务器不允许这种操作。为了使用有UPDATE或DELETE
语句的游标,必须说明它以便修改。检查程序逻辑以确信在这条语句中使用想要用的
游标。

在符合ANSI标准的数据库中操作时,任何游标可以被用于修改;不需要FOR UPDATE
子句(会产生一个警告)。

-291 不能改变表的锁定方式。

当前的LOCK TABLE语句不能被执行,因为已经用不同方式(EXCLUSIVE或SHARE)
锁定同一个表。为改变锁定方式,在再次锁定之前要对这个表解锁。

-292 隐含的插入字段<字段名>;不接收NULL。

这条INSTER语句不对表中的所有字段提供值。至少忽略了一个字段限制不能为null。
因为数据库服务器必须为每个未提及的字段插入null值,它不能执行这种插入。对照
表的定义检查语句。可能表的定义已经改变。

-293 IS [NOT] NULL的谓词只能被简单字段使用。

对于null值的测试可只适用于<字段名>;(例如不适用于带下标字符的字段或表达式)
。检查WHERE子句中关键字的用法。

-294 字段<字段名>;必须在GROUP BY列表中。

在分组的SELECT中,必须在GROUP BY子句中列出每个非统计字段,以确保在每一分组
行中每个选定的字段有定义好的值。一个字段或是包含一个统计值,或是包含对那个
组来说是唯一的值。如果选定的字段既不是统计值又不在列表中,在同一组中可能那
个字段有两个或多个值,数据库服务器不能选择要显示哪一个。修正查询以便在该子
句中包含该字段名或它的位置号。

-295 被参考表和参考表必须在相同的数据库中。

参考限制不能跨数据库。换言之,被参考字段和参考字段(或父键和子键)必须在相
同数据库中。

-296 被参考表<表名>;没找到。

在参考限制中指定的被参考表不存在。

-297 不能找到对参考表<表名>;的唯一限制和主键。

数据库服务器不能把参考的限制放在sysconstraints系统目录表中,参考的限制不是
在相同的ALTER TABLE语句中作为参考限制创建的。参考的限制不存在。检查是否输
入有相应限制的有效字段名。有效的限制字段说明了一个内部错误。如果错误再次发
生,请记录详细情况并与Informix技术支持部联系。

-298 不能用授予选项授予public权限。

子句WITH GRANT OPTION允许接受者授予他人相同权限的授权。在这种情况下,授权的
接受者是PUBLIC。如果执行这条语句,每个人将有该权限,而且每个人能授权。该权
限禁止这种操作。或者指定被授予者,或者删除子句WITH GRANT OPTION。

-299 不能授予本身权限。

这条GRANT语句把你的用户id作为一个被授予者。如果你能授予该权限,你就已经有该
权限。检查语句,从TO子句去掉你的用户名。

-300 有太多的GROUP BY字段。

在GROUP BY子句中可以列出的字段数是数据库服务器的实现限制。所有数据库服务器
至少支持8个字段。检查当前语句,确信GROUP BY子句的标点是正确的。如果是你想象
的,你就必须寻找用两步或两步以上做这件事的办法。因为所有非统计的选择字段必
须在 GROUP BY子句中列出,而列表的长度受限制,就必须只选择区别每组所必须的
非统计值。把该组的结果放入一个临时表,把这个表连接到原来的表以选择其它
非统计值。

-301 GROUP BY字段的总数太大。

数据库服务器限制在GROUP BY子句中列出的组合字段的字节总数。所有数据库服务器
至少支持120个字节。更多的信息参考错误 -300的讨论。

-302 对多表视图没有GRANT选项或选项非法。

这条GRANT语句不能被执行。无权为这个表授予指定的权限,表名是一个别名;或该表
是一个视图,对它不能授予这个选项。为了授予某表任意权限,你必须有这个数据库
的DBA的权限,必须是这个表的所有者,或者被授予相同权限WITH GRANT OPTION。
如果符合其中之一,有问题的表的确是一个不能修改的别名或视图,因此不能用于
插入、修改或删除操作。

-303 表达式把字段和统计函数混淆。

这条SELECT语句在它的WHERE子句中使用统计函数。这种操作是不允许的。WHERE
子句必须在表被扫描时逐行使用,而统计函数只能在所有行被选出和分组后计算。检
查该语句是否这样做了。如果只打算选择某组记录,可以把这样的测试放在HAVING
子句中,它适用于已分组的行。

这条信息的文本有些易使人误解的地方。事实上,你能够在表达式中把字段名和统计
函数混合使用。然而,你只能在选择列表或HAVING子句(不是在WHERE子句)中
做这件事,字段必须出现在GROUP BY子句。

版本5.01后的数据库服务器中不使用这条错误信息。

-304 HAVING只能有统计或GROUP BY子句中的字段的表达式。

HAVING子句用于在分组后选择完成的行。因此它能测试的唯一选择值是能在完成的分
组行中得到的值,名义上是在GROUP BY子句中命名的单值字段和统计值。检查HAVING
子句是否符合这种规则。如果要在分组进行之前选择具体的行,可以使用WHERE子句。

-305 有下标的字段<字段名>;不是类型CHAR, VARCHAR, TEXT ,也不是BYTES。

只能从所述类型的字段选择子串。检查在这条语句中使用的所有方括号,确信每个方
括号遵循有这些类型之一的字段的命名。如果是这种情况,检验你使用的是你想要的
数据库,重复检查该表的定义。可能表中的一个字段已经改变,使用了不同的类型。

-306 下标超出范围。

这条语句参考一个字符变量的子串。子串的值(在方括号中的两个数)是不正确的。
第一个小于零或大于字段的长度,或者第二个小于第一个。检查语句中使用的所有方
括号,找出错误。可能是改变了某字段的字长,使子串工作时失败。

-307 不合法的下标定义。

这条语句参考一个字符变量的子串。子串的值(在方括号中的两个数)是不正确的。
第一个小于零或大于字段的长度,或者第二个小于第一个。检查语句中使用的所有方
括号,找出错误。可能是改变了某字段的字长,使子串工作时失败。

-308 对于每条UNION语句,相应的字段类型必须是一致的。

在SELECT语句的UNION中产生的所有行必须有相同的格式。因此每个字段应该有相同
的数据类型。在当前语句中,在第二条或接下去的SELECT中的某字段和前面的SELECT
中的同一字段不一致。检查和比较所有SELECT语句。核对选择的东西与前面的SELECT
语句不相同的语句的每一个地方。在UNION期间不提供自动的数据转换;数据类型在
选择时必须相同。如果不可能,考虑建立临时表并使用一系列INSERT语句来与想要的
行结合以作补充。在INSERT期间提供自动的数据转换,因此这样有差别但兼容的
数据类型可以被改成相同类型。

-309 ORDER BY的字段<字段名>; 必须在SELECT列表中。

所示的字段出现在这条SELECT语句的ORDER BY子句中,但它不在选择列表(词SELECT
之后的值列表)中。这种操作是不支持的。所有分类键必须以分类的顺序出现在输出
行中。修改语句使之符合这一规则。如果只想对涉及这个字段的表达式排序,不是对
字段本身,则可以在列表中按它的位置号参考表达式。

-310 数据库中已存在表<表名>;。

这条语句试图创建所示名字的一个表,但那个名字的表已经存在。在一个数据库中只
能存在一个给定名称的表。(在符合ANSI标准的数据库中,表是由创建它的用户的名
称限定的,因此每个用户只能有一个给定名称的表。)

检查那个名称的拼写,如果与你所想的一样,你应确认它不存在,确认你正在使用的
数据库是你所想的。你可以通过查询如下的systables,检查在这个数据库中的所有表
名。

SELECT tabname FROM systables WHERE tabid >; 99

该语句将只显示永久表的名字,而没有临时表的名字。临时表不出现在systables
中。如果该名字不出现,结束数据库会话并启动新的数据库,临时表将被取消。

-311 不能打开系统目录<表名>;。

数据库服务器不能访问系统目录中的一个表。有关原因的详细信息请见伴随的ISAM
错误代码,并查看操作系统的错误信息,那里可能给出更多的信息。

-312 不能修改系统目录<表名>;。

数据库服务器不能记录所示系统目录表中的变动。有关原因的更详细信息,请检查
伴随的ISAM错误代码。一个常见的原因是缺少磁盘空间。

-313 不是表的所有者。

这条语句试图做某些事,例如取消一个表,这只能由表的所有者或有数据库管理员权
限的用户才能做。要确认语句中的表名是你所想的表。如果是,就必须是该表的所有
者或DBA,以便执行这条语句。为了查知与谁联系,可以查询如下系统目录。

SELECT tabname, owner FROM systables WHERE tabid >; 99; SELECT username
FROM sysusers WHERE usertype = 'D'

-314 表<表名>;现正在使用。

这条语句试图做某些事,例如取消一个表,在其它用户使用这个表时,这件事不能
做。等待一会儿再试试。为了确认没有表在使用,用DATABASE EXCLUSIVE打开数据
库。

-315 没有创建索引的权限。

这条语句试图为一个表创建索引。或是没有对这个表授予INDEX权限,或者该表本身是
一个视图或别名。如果命名的这个表确实是一个表,与表的所有者或数据库管理员联
系(见错误 -313的讨论)并请求授予这种权限。

-316 数据库中索引< 索引名>;已经存在。

这条语句试图用所示的名字创建一个索引,但那个名字的索引已经存在。在一个数据
库中只能存在一个给定名称的索引。(在符合ANSI标准的数据库中,创建索引名的用
户名限定了这一点,因此每个用户只能有一个给定名称的索引。)检查名称的拼写,
如果与你所想的一样,你应确认它不存在,确认你正在使用正确的数据库。你可以通
过联结如下的systables和sysindexes,检查所有索引的名字和它们的所有者。

SELECT T.tabname, I.idxname, I.owner FROM systables
T, sysindexes I WHERE I.tabid = T.tabid AND
T.tabid >; 99

-317 在每个UNION单元里所选的字段数必须相同。

在一个联合中产生的所有行必须有相同的格式。因此在联合中的每条SELECT语句必须
选择相同的字段数。在这个联合中第二条或接下去的SELECT语句列出的字段数和前面
的不相同。检查整个联合,并检查所有选择列表的数量和数据类型都一样。如果其中
一条语句没有相应的字段,在那个位置指定相应类型的文字值。例如,在需要匹配数
值字段的地方,指定一个文字零。

-318 和指定的日志文件有相同名称的文件已经存在。

在WITH LOG IN子句中指定的事务日志文件不能已经存在。数据库服务器必须启动新的
日志文件;它不能把日志数据附加到旧日志文件。已存在的日志文件包含可能是很关
键的恢复信息,因此它不是简单地清空已存在的文件。为了对以前还没有登录过的数
据库开始登录:锁定数据库;把所有数据库目录拷贝到备份介质;并使用START
DATABASE语句命名新文件。为了顺序地存档:锁定数据库;把所有日志文件拷贝到备
份介质并存储它作为完整的档案;擦去或重命名日志文件;使用START
DATABASE语句。

-319 索引不在ISAM文件中。

这条语句参考不存在的索引。(参考无关的ISAM文件,不予理睬。)检查索引名的拼
写,如果正确并确实存在,确认是在使用正确的数据库。

在符合ANSI标准的数据库中,不属于自己所有的索引必须由它的所有者名限定。检查
所有索引的名称和所有者的办法,见错误 -316的讨论。

-320 不是索引的所有者。

这条语句试图做只能由索引的所有者或有数据库管理员权限的用户做的事情,例如取
消索引。确认该语句命名你想要的索引。如果正确,你就必须是它的所有者或DBA,
才有权执行这条语句。关于列出索引的名称和所有者的办法,见错误 -316的讨论。

-321 不能用统计字段分组。

这个语句中的GROUP BY子句参考所选的值是统计函数的值。这种操作是不支持的(在
形成分组之前,不能计算分组使用的值)。能够按照字段或字段表达式的值把数据行
分组,但表达式不能包括统计函数。检查GROUP BY子句,把它和选择列表比较。可能
是GROUP BY子句中一个字段数有错误。

-322 不能创建、更改或重命名视图<视图名>;的触发器。

可以只在一个表上创建触发器。考虑在取得视图的表上创建触发器,或者考虑作为表
创建视图<视图名>;,然后在其上创建触发器。

如果对视图使用START VIOLATIONS TABLE语句或STOP VIOLATIONS TABLE语句
也能收到该信息。两个语句中都必须指定基表的名字。

-323 不能对临时表授予权限。

GRANT语句命名临时表。这种操作是不支持的。只对永久表记录权限。因为临时表不在
系统目录中记录,没有地方来记录它们的权限。只有创建临时表的人能访问它。

-324 二义性字段<字段名>;。

说明的字段名出现在这个查询的FROM子句里列出的多个表中。数据库服务器需要知道
要用哪些字段。修正查询语句,使在查询中出现这个字段名的地方用它的表名做前缀
(<表名>;.<字段名>;)。如果这样写使语句太长,就在FROM子句中给表起一个短一些的
别名(举例见错误 -316的讨论)。

-325 文件名必须用全路径名指定。

如在试图用WITH LOG IN子句创建一个表,但没有对注册文件指定全路径时发生这个错
误。如果使用INFORMIX-SE来创建数据库登录而又没有指定注册文件的全路径,也会发
生这个错误。确认已指定全路径名,包括指出注册文件常驻地方的名称。

-326 参考限制有太多的被参考字段。

指定的参考限制多于16个字段(或INFORMIX-SE中8个字段)。

-327 不能解事务内表<表名>;的锁。

在事务内,即在执行BEGIN WORK之后,不允许有命令UNLOCK TABLE。在使用事务时,
可能还在使用LOCK TABLE,但是在事务结束时,所有表将被自动地解锁,因为所有锁
在事务结束时被释放。在符合ANSI标准的数据库中不使用BEGIN WORK,事务总是起作
用,决不要使用UNLOCK TABLE语句。

-328 表中已经存在字段<字段名>;。

这个语句试图加入所说明的字段,但该名字的字段已经存在。检查名称的拼写;如果
是你想要的,则该表不是如你所期望的安排。通过查询syscolumns,可以检查表中的
所有字段。用如下查询提供表名。

SELECT colname, colno FROM syscolumns C, systables T
WHERE C.tabid =T.tabid AND T.tabname =`table-name'

可以使用RENAME COLUMN改变字段名。

-329 数据库没有找到或没有系统权限。

试图打开的数据库在数据库服务器中找不到。检查名称的拼写。可能是数据库放在不
同的数据库服务器(或网络系统),而你忽略了指定有该数据库名的服务器名(或节
点名)。如果确认数据库如你拼写的那样存在,下一步就取决于正在使用的数据库
了。

如果使用的是INFORMIX-SE,看得见的数据库是在形如<数据库名>;.dbs中的目录名。必
须对它们可读可写。数据库服务器首先在当前工作目录查看,然后是在DBPATH环境变
量中命名的每个目录。这个错误的最常见原因是不正确设置或没有设置DBPATH环境变
量。

如果使用的是INFORMIX OnLine动态服务器,按所拼写的数据库不存在。在某些环境
中,可能有一次运行两个或更多的OnLine的实例,每个实例有它自己的数据库集合。
对于版本6.0或以后版本,INFORMIX SERVER环境变量决定使用哪个INFORMIX OnLine
动态服务器的实例。对于版本5.01或更早的版本,TBCONFIG环境变量指出配置文件,
它决定使用哪个INFORMIX -OnLine的实例。如认为可能在使用错误的OnLine实例,请
找OnLine管理员。

-330 不能建立数据库。

可能试图用与已存在的数据库相同的名称建立一个数据库。如果是这样,选择不同的
名称。否则,有关原因的更详细信息,请检查伴随的ISAM错误代码。可能是磁盘空间
不足或存在文件权限的问题。

-331 不能取消数据库目录。

在数据库服务器执行DROP DATABASE语句时,从<数据库名>;.dbs删除所有与数据库相关
的文件并试图删除目录本身,因而发生错误。有关原因的更详细信息,请检查伴随的
ISAM错误代码。最有可能的原因是你或其它用户在同一目录中建立了非数据库文件。
而目录不能被删除,因为它还不是空的。

-332 不能访问审计追踪名的信息。

在读审计追踪文件时发生错误。重新执行最后的语句,如果还发生错误,审计追踪文
件有错误。在这种情况下,将需要取消并重新启动审计追踪。

-333 审计追踪文件已经存在,有不同的名称。

在启动新的审计追踪之前,必须取消已存在的审计追踪。使用DROP AUDIT语句。

-334 不能建立审计追踪。

某些问题防止数据库服务器初始化审计追踪文件。检查为文件指定完整的、正确的路
径名。查看操作系统错误信息,它可能给出较多的信息。常见的问题包括缺少磁盘
空间和文件的权限问题。

-335 对指定的表没有审计追踪。

这条语句要求有审计追踪工作,但不存在对该表的当前审计追踪。要么不曾启动,要
么被取消。检查该表是你想要的。如果是在进行恢复工作(语句是RECOVER
TABLE),那么,请检查该表是否从备份的拷贝恢复。如果是,那么在做这个备份时,
该表没有审计追踪。如果审计追踪在后来指定,则在备份和开始审计之间有未知的一
段时间,在此期间可能有未被审计的修改。

-336 不能建立或取消对临时表<表名>;的审计。

临时表不能被审计。关于审计追踪的命令将不接收临时表的这个表名。如果目的不是
命名临时表,检查显示的表<表名>;的拼写。关于显示数据库中所有永久表名的办法,
见错误编号 -313的讨论。

-337 试图在临时表<表名>;上建立视图。

视图只能建立在永久性的表上。在最新的语句中定义视图的SELECT语句中有临时表,
表名。如果你本来不想命名一个临时表,请查看表名的拼法。请参看-313号错误的讨
论,那里给出了显示数据库中全部永久表名的方法。

-338 不能删除审计追踪。

在执行DROP AUDIT命令时,发生了未预料到的错误。为得到更详细的信息,请查看伴
随的ISAM错误代码。

-339 审计追踪文件的名字必须以全路径名的形式给出。

CREATE AUDIT语句中指定的审计追踪文件必须指定全路径。因为审计追踪文件不必放
在特定的目录中,数据库服务器无法用当前路径或DBPATH 变量去寻找它。

-340 不能打开审计追踪文件。

数据库服务器需要为此表而使用审计追踪文件,但是某种意外的错误阻止了它。硬件
错误、文件权限问题、不小心删除了审计追踪文件都可能导致该错误。请查看操作系
统错误信息,它可能会提供更多的信息。

-341 不能从审计追踪文件中读一行。

在数据库服务器读取此表的审计追踪文件时,遇到了意外的错误。错误的原因可能是
文件权限问题、硬件错误。请查阅操作系统信息,以获得更多的信息。

-342 远程主机不能执行此语句。

本语句被送到别的系统上的数据库服务器上执行,但数据库服务器不支持所请求的函
数。也许是早期版本的原因。

-343 审计追踪中的行被加到了不同于期望的位置上。

当数据库服务器按审计追踪中重新构造表时,发现被插入的行现在的位置与审计追踪
中记录的该行第一次插入时的位置不同。要么审计追踪已经损坏;要么审计追踪不完
全,即丢失了一部分修改记录。表不能按审计追踪恢复。在确认已经使表完全地恢复
到审计追踪建立时的状态之后,再重新操作一次。如果错误再次发生,请按其它方式
重建表。

-344 不能删除行-表中的行与审计追踪中的行不匹配。

当数据库服务器按审计追踪重新构造表时,发现被删除的行现在的位置与审计追踪中
记录的该行第一次删除时的位置不同。要么审计追踪已经损坏;要么审计追踪不完
全,即丢失了一部分修改记录。表不能按审计追踪恢复。在确认已经使表完全恢复到
审计追踪建立时的同样状态之后,重新操作一次。如果错误再次发生,请按其它方式
重建表。

-345 不能变更记录-表中的记录与审计追踪中的记录不匹配。

当数据库服务器按审计追踪重新构造表时,发现更新后的的行现在的内容与审计追踪
中首次进行更新时记录的内容不同。或者审计追踪已经损坏;或者审计追踪不完全,
即丢失了一部分修改记录。表不能按审计追踪恢复。在确认表已经精确地恢复到它在
建立审计追踪时的状态之后,重新操作一次。如果错误再次发生,请用其它方式重建
表。

-346 不能修改表中的一行。

在数据库服务器处理UPDATE时,收到一个非期待的错误,为得到引起该错误原因的更
详细的信息,请查看伴随的ISAM错误代码。原因可能是硬件错误或者锁冲突。

-347 不能按排他存取方式打开表。

数据库服务器不能完成LOCK TABLE命令,或者隐含的LOCK TABLE作为其他命令(例如
ALTER TABLE,RENAME, CREATE INDEX这类改变表定义的语句)的一部分被执行。为得
到引起该错误原因的更详细的信息,请查看伴随的ISAM错误代码。可能的原因包括锁
冲突、锁表已满,或低层的主机操作系统的锁机制有问题。

-348 不能从表中读一行。

数据库服务器试图从表中取一行时,接到了一个意想不到的错误。为得到引起该错误
原因的更详细的信息,请查看伴随的ISAM错误代码。原因可能是硬件错或者锁冲突。

-349 未选择数据库。

因为没有当前的数据库,所以此语句不能执行。或许当前数据库没有建立,或许当前
数据库被CLOSE DATABASE语句关闭了。你可以执行DATABASE或者CREATE
DATABASE命令建立当前的数据库。

-350 该字段的索引已存在。

由于在同一字段或同一字段组合上已存在索引,所以CREATE INDEX不能执行。任意字
段组合最多可以有两个索引,一个为升序索引,一个为降序索引。可以通过联结
sysindexes和systables产生的特殊表来显示索引。在下述语句中给出表名即可:

SELECT * FROM sysindexes,systables
WHERE sysindexes.tabid =systables.tabid
AND systables.tabname =`table-name'

sysindexes 表不是普通的表(part字段是重复的组),所以没有简单的SELECT
语句可以返回索引的所有字段名。

-351 数据库中有属于其它用户的表。

DROP DATABASE/UPDATE STATISTICS语句不能运行,可能是由于以下的原因:可能
会破坏其它用户的数据。为了取消此数据库,先要取消全部属于其它用户的表。做此
事时你必须有DBA的权限。请参看-313号错误的讨论,那里给出了显示全部表和它们
的拥有者的方法。

-352 字段<字段名>;没有找到。

CREATE INDEX语句中命名的字段或其中之一不存在。重新查看语句中所有字段的拼
法。请参看-328号错误的讨论,那里有列出表的所有字段名的方法。

-353 在赋予或撤消权限时,没有指定表或视图。

此语句指定表级别的权限(ALTER, DELETE,INDEX, INSERT, SELECT, UPDATE和 ALL)
中的一个;但没有指定权限所作用的表。在赋予或撤消数据库级别的权限(CONNECT,
DBA,RESOURCE)时,你可以不命名表名。但在赋予或撤消表级别的权限时,你必须
指定表。

-354 数据库名或游标名的格式不正确。

此语句中含有不正确的数据库名或游标名格式。如果语句是程序的一部分,数据库名
可能已被传到一个主机的变量中。在OnLine中数据库名应该不多于18个字符,在
INFORMIX-SE中数据库名不多于10个字符(在某些操作系统中可能更少)。游标名必须
不超过18个字符。

数据库名和游标名必须以字母开始,包含字母、数字、下划线字符。6.0及以后版本数
据库名和游标名可以以下划线字符开始。

在DOS系统中,文件名最多只能是8个字符加3个字符的扩展名。

-355 不能重新命名表的文件名。

RENAME语句不能完成,因为数据库服务器得到一个非期待的错误。为得到该错误的
更详细的信息,请查看伴随的ISAM错误代码。可能的原因包括硬件错误和文件权限
问题。

-356 引用和被引用的字段的数据类型不匹配。

子约束中的字段的数据类型必须与父约束中的字段数据类型相同。

-357 视图<视图名>;所依赖的表已被变更。

自从视图定义以来,视图所依赖的表的数据已被变更。此变更删除或者重新命名了视
图中用到的一个字段。视图不能再使用了。取消视图,按现在的模式重新定义视图。

-358 在对数据库执行CREATE、START或ROLLFORWARD操作之前必须关闭当前的
数据库。

此类语句要选择新的当前数据库。但当前数据库必须首先被关闭。请先用CLOSE
DATABASE关闭数据库。

-359 不能取消当前数据库。

当前打开的数据库不能取消。请先用CLOSE DATABASE语句关闭数据库,然后再取消
它。

-360 不能修改用于子查询中的表或视图。

UPDATE/INSERT语句使用的数据是从与子查询相同 的表中取出的。这种操作是不允许
的,因为它将导致无穷循环的危险。你可以先把输入数据选择到个临时表,然后再用
UPDATE/INSERT语句引用此临时表。

-361 字段太长。

这个内部错误反映了数据库服务器和应用程序之间通讯方面的问题。不应看到此错
误。如果此类错误再次发生,请记录下全部环境并与INFORMIX技术支持部联系。

-362 只能有一个SERIAL型字段。

表中最多可以有一个SERIAL型字段。该CREATE TABLE语句指定了两个或两个以上的
SERIAL型字段。重新检查语句,删除多余的的SERIAL型字段。如果你想在表中有一个
外码字段(即引用其它表中的SERIAL型字段),那么在本表中应使用INTEGER
数据类型字段。

-363 CURSOR不在SELECT语句中。

此语句(也许是OPEN语句)中的游标被联系到一个非SELECT语句的预备语句。重新查
看程序的逻辑,特别是游标定义的DECLARE语句、所指定的语句id、建立语句的
PREPARE。如果想在INSERT中使用游标,那么只能把INSERT写为DECLARE语句的一
部分。如果要执行一些SQL语句,可直接用EXECUTE语句而不要使用间接的游标方式。

当你试图将游标联系到一个SELECTINTO TEMP语句时,也会返回这个错误。由于
INTO TEMP子句的存在,SELECT语句不能返回任何记录,因此不能使用游标。

-364 没有说明UPDATE OF的字段<字段名>;。

UPDATE...WHERE CURRENT OF <游标名>;语句至少引用了一个字段:它未出现在定义游
标的DECLARE语句的FOR UPDATE OF子句中。将某些字段列在游标声明中,数据库服
务器将不允许其它字段被修改。重新查看此游标的定义和使用。也许消息提到的字段
和其它的字段应该加到定义中;或者应该删除OF子句,从而允许游标删除表中任意
字段。

-365 FOR UPDATE子句中的游标仅可用在简单SELECT中。

此语句(也许是OPEN语句)中命名的游标在FOR UPDATE子句中定义。然而,它所联系
的SELECT语句或者联结了两个以上的表的联合;用到了UNIQUE, DISTINCT,
ORDER BY, GROUP BY或 UNION;或者选择了一个计算值。此类选择语句不能用于更
新,因无法把新数据分配回多个表中。重新查看游标定义,如果它被定义为FOR <语
句id>;,还要重新查看建立该语句的PREPARE语句。也许需要两个游标,一个游标用于
一般查询,另一个用于更新。

-366 小数位数超过了指定的最大精度。

此语句中DECIMAL/ MONEY数据类型的精度或小数位数有问题。重新查看这些类型的用
法。首先,DECIMAL应该定义为DECIMAL(p)或DECIMAL(p,s)。此处的p代表1到32之间的
精度(数字的总共位数),s代表小数位数(数字小数点右边的数字个数),并且S不
大于P。MONEY型遵循同样规则。

-367 不能计算字符型字段的总和或平均值。

此语句用 SUM /AVG函数对字符型字段(即CHAR或VARCHAR数据类型)进行计算。
如果你不想计算字符型字段的总和或平均值 ,请重新检查表定义时字段名的拼法。
如果字符型字段中存的是字符形式的数值,有个方法可以巧妙地实现数据库服务器
(4.0及以后版本)的自动转换。在表达式中用圆括号的表达式 (<字段名>;+0)
代替函数中的字段名。

-368 不兼容的sqlexec模块。

数据库服务器版本与数据库应用程序例行函数库版本不匹配。这个不兼容性在应用程
序能够执行之前必须解决。数据库服务器通过SQLEXEC环境变量被选中(专指6.0以前
版本的数据库服务器),此变量含有数据库服务器代码的全路径,它常用的名字是
sqlexec或sqlturbo(专指6.0以前的数据库服务器版本)。连接到程序中的存取例行
程序是在编译时选择的。如果你正在执行的程序是由Informix提供的,那么可能是此
Informix产品或其它Informix产品安装不正确。

-369 非法的序列号。请参阅你的安装指南。

在安装你的INFORMIX产品时产生一些错误。请查看SQLEXEC环境变量的值(对6.0之前
的数据库服务器版本而言)和 INFORMIXDIR环境变量,然后向软件安装人员咨询并请
重新查看安装指南。

-370 不能删除最后一个字段。

ALTER TABLE DROP语句要删除表中的每个字段。至少要留一个字段。改正语句,至少
保留一个字段。如果你不想要整个表,可用DROP TABLE语句删除该表。

-371 不能在含有重复值的字段上创建唯一索引。

CREATE UNIQUE INDEX语句不能完成,因为此字段(或一些字段)有一条以上重复的
行。你可以建一个普通索引以接受重复值,或者删除掉重复的值。要得到一列字段中
的重复值,可先建立一个普通索引,在下述SELECT语句中填入表名和字段名,然后执
行之:

SELECT column FROM table main WHERE 1 <
( SELECT COUNT(*) FROM table sub
  WHERE main.column = sub.column )

这种语句可扩展到使用了AND的多个字段的情况。

-372 不能变更打开了审计追踪的表。

一旦某表的审计追踪被启动,表就不应变更。如果必需变更,请执行下述操作:把表
复制到备份介质上,用DROP AUDIT去掉审计追踪,删除审计追踪文件,变更表,再把
表复制到备份介质上的,最后用CREATE AUDIT启动新的审计追踪。如果表变更失败(
如果表太大,那么操作过程将长,需要大量的磁盘操作),就要把第一次复制的表恢
复回去。第二次复制的表也是必要的,因为如果变更后的表必须恢复时,那么新的审
计追踪应该被使用有相同的字段格局的备份。

-373 DBPATH太长。

在使用 DBPATH 环境变量定位数据库时,数据库服务器构造的全路径串超出了80个字
符的限制。此限制为完整的数据库目录路径名(即从斜线或者反斜线起到.dbs止)
的长度的限制。为了能使用数据库,你可能要把它定位在较高层的目录上。(此信息
易引起误会,对 DBPATH内容的总长度没有特别限制。)

-374 在带UNION的ORDER BY子句中只能使用字段号。

此查询语句包含UNION和ORDER BY子句。在一个有几个选择语句、而且每个语句中的被
选字段的名字不必要相同的"并"查询语句中,不能在ORDER BY子句中使用字段名。但
可以用位置号表示,即用1表示第一个字段、2表示第二个字段等等。请重写此查询,
在ORDER BY 子句中只使用数字。

-375 不能生成事务的日志文件。

当数据库企图利用执行START命令创建事务日志时,遇到了一个非期待的错误。请查看
伴随的ISAM错误代码,它将提供更详细的信息。典型的原因为磁盘空间不够,文件权
限问题,可同时打开文件的个数的限制。

-376 日志文件已存在。

你在WITH LOG IN 子句中定义的事务日志文件必须是尚不存在的。数据库服务器必须
使用新的日志文件。没有办法在旧的日志文件的后面添加日志数据。已存在的日志文
件中的恢复数据是至关重要的,所以不能简单清空已存在的日志文件。要作一完全备
份:先锁定数据库,把数据库的目录复制到备份介质上,删除日志文件(这个文件已
不再需要了),执行START DATABASE语句。要进行部分归档,先对数据库加锁,把日
志文件复制到备份介质上并以全归档的方式存储复制的日志文件,删除/重命名日志文
件,执行START DATABASE 语句。

-377 在关闭数据库之前必须结束事务。

只有在当前事务完成后,该语句(DATABASE,CREATE DATABASE或CLOSE
DATABASE)才能执行。你可以使用COMMIT WORK语句,也可以用ROLLBACK
WORK语句,然后就可以关闭数据库了。

-378 当前记录被其它用户锁住。

此语句需要的表中的一行不能被访问,因为此行已被锁住。为得到更多的信息,请查
看伴随的ISAM错误号。可能的错误码为-107, -113, -134, -143, -144, -154,它们
分别表示你的程序和其它用户程序之间些微不同的关系。可用SET LOCK MODE TO WAIT
来阻止大部分(但不是全部)此类错误的发生。

在4.1之版本前的数据库服务器中,这类错误只是由UPDATE 和 DELETE WHERE
CURRENT OF语句引起的在6.0版本中,这条错误信息不再被使用。

-379 不能撤消字段上的权限。

在GRANT语句中,可以对特定的字段授与UPDATE或SELECT权。然而,REVOKE权限语句只
能接受权限类型的关键字,你不能撤消对指定字段的访问权限。如果要改变某个用户
所允许访问的字段,那就必须先撤消全部权限,再按新的字段列表予以授权。

-380 不能删除日志文件。

数据库服务器在初始化事务的日志时,接收到一个非期待的错误。请查看伴随的ISAM
错误代码,它将给出关于原因的详细说明。典型的原因是硬件错误和文件权限错误。

-381 不能将权限授给那些将该种权限赋予你的用户。

你试图将原先以WITH GRANT OPTION授与你的权限授予别人。原来授予你该权限的用户
的名字也列在当前命令的用户名单之中。为了系统安全起见,不允许相互授权。重写
语句,去掉那些授权给你的用户的名字。要查看你不该授权的用户名单,请按下列方
式查询systabauth:

SELECT grantor FROM systabauth WHERE grantee = USER

-382 在视图和选择子句中指定的字段个数必须相等。

在此VIEW语句中,你已经列出了视图的字段名。然而,此处列出的字段数与定义视图
的SELECT语句中的字段数不等。检查两个列表中的标点,确认你为选择列表中的每项
都提供了名字。

-383 聚合或表达式中的视图字段必须显式地命名。

在该VIEW语句中你没有为字段列出特定的名称。只有当SELECT语句只选择简单的、命
名的字段时,这种操作才是允许的。然而,此处的SELECT语句选择了一个或者多个表
达式。你必须在视图名后的括号中列出字段的名字。因为不能只给出一部分字段名,
你必须列出全部字段名。

-384 不能修改非简单视图。

此语句试图修改(插入、删除、修改)一视图中的某些字段。然而,此视图不可被修
改。此视图是基于联结两个或者更多的表的SELECT语句的,或者是用来选择计算值、
文字值的SELECT语句的。(但你可以对从单个表中选出的视图进行DELETE
操作,即使有一些计算值被选出也是允许的。)你必须使此语句直接对视图所基于的
表进行操作。

-385 数据值越界。

此语句企图向一个用WITH CHECK OPTION定义的视图中送数据。因此新的数据必须满
足视图中WHERE子句的检查条件。然而,在当前语句中有一个或者多个数据值不满足
条件。所以此变更操作不能执行。事物被滚回。要查看新数据必须满足的条件,可用
下列语句显示视图的定义:

SELECT seqno, viewtext FROM sysviews, systables
WHERE systables.tabname = 'viewname' AND
systables.tabid = sysviews.tabid ORDER BY seqno

-386 字段中包含空值。ALTER TABLE 语句中包含的MODIFY字句将NOT NULL属性赋
予一个已经存在的字段。但此字段已包含了一个或者多个null值。除非将所有的null
值删除或者将其更新为非null值,否则此修改无法完成。

-387 没有连接权限。

不能访问这条语句所要求的数据库,因为没有被获准与该数据库连接的权限。
请与拥有该数据库管理员权限的人联系,并向他申请与该数据库连接的权限。

-388 没有资源权限。

如果有CREATE TABLE, CREATE INDEX,或CREATE PROCEDURE语句,这些语句
不能被执行,因为你的帐户没有被授予此数据库的RESOURCE权限。你需要RESOURCE
权限去创建永久性的表和永久性表的索引和过程。

如果有SET语句,START VIOLATIONS TABLE语句,或STOP VIOLATIONS TABLE
语句,这些语句不能被执行,因为你的帐户没有被授予此数据库的RESOURCE权限。你
需要RESOURCE权限在当前数据库中对一限制的、触发的或定义了索引的表去执行SET
语句。在当前数据库中对一基表执行START VIOLATIONS TABLE或STOP VIOLATIONS
TABLE语句也需要RESOURCE权限。

为解决此错误,请与有此数据库的DBA权限的人联系,并请他授给你该数据库的
RESOURCE权限。

-389 没有DBA权限。

此语句不能被执行。因为你的帐户没有被授予此数据库的DBA的权限。请与有此数据库
DBA权限的人联系,并请他授权给你(或者请他帮你执行此语句)。

-390 此同义名已作为表名或同义名使用过。

CREATE SYNONYM语句命名了一个已在使用的同义名。为查看当前定义的同义名和表
名,请按如下方式查询systables:

SELECT tabname, owner FROM systables WHERE tabid >;99

-391 不能向字段<字段名>;中插入null。

此语句试图向所指出的字段中送入NULL值。但此字段被定义为NOT NULL。当前事务被
滚回。如果这是一段程序,请重新检查表的定义并修改程序的逻辑使null不被用于不
接受NULL的字段。

-392 系统错误- -遇到非期望的NULL指针。

这是一个不应发生的内部错误。如果此类错误再次发生,请记录下全部环境并与
INFORMIX技术支持部联系。

-393 where子句中的条件导致双向外部联结。

此查询需要一个外部联结。但是在WHERE子句有一个或更多的条件使主—从关系发生冲
突。请重新察看查询,确认关联两个表的每个条件都是必要的。

-394 没有找到视图<视图名>;。

所命名的视图不存在,故不能删除之。可用如下语句查询systables中现存的视图的名
字:

SELECT tabname FROM systables WHERE tabtype = `V'

-395 WHERE子句包含一个外部笛卡尔乘积。

此查询需要一个外部联结。但是WHERE子句的写法实际是要对于主表的每一行分别选出
从属表的每一行,这将导致一个规模非常大的输出。请重新察看查询语句,并检查在
查询语句中至少有一个条件使每一对主—从表之间有关联。

-396 在嵌套的外部表与保留表之间存在不合法的联结。

此查询需要一个外部联结。但是WHERE子句中的一个条件使一个嵌套的从属表与一个不
是它的直接父表的保留表之间发生关联。这种操作是不被支持的。请重新察看此查
询,确认每个条件中相关联的两个表分别是保留表与它的直接从属表。

-397 系统目录 <表名>; 损坏。

这个内部错误不该出现。该数据库服务器在一个或多个系统目录表中遇到一些破坏完
整性约束的内容。运行 tbcheck 或 oncheck实用工具 (对于 OnLine) 或者bcheck 或
secheck实用工具 (对于 INFORMIX-SE)。如果该错误再次出现,请记下全部细节并
与Informix技术支持部联系。

-398 游标控制必须在一个事务内部。

试图使用一个UPDATE 或一个DELETE WHERE CURRENT OF语句时会产生这个错误信息。
这个语句将通过一个游标修改一个表。然而,这个数据库使用一个事务日志。对这种
情况,通过一个游标进行修改必须处于一个事务的范围。

检查程序逻辑,并检查在这个语句之前先执行BEGIN WORK 语句而且在适当的时间结束
该事务。如果程序既要通过使用事务的数据库,又要通过不使用事务的数据库来工
作,你可以让它检测 SQL 通讯区的sqlwarn 数组的第二个元素。如果该数据库有一
个事务日志,该通讯区就包含一个跟随DATABASE语句的字母W;如果没有事务日志,
就包含一个空格。

-399 不能存取日志文件。

这个查询参考一个命名为syslog 的表。systables目录有一行在 tabname字段中具有
syslog,但这只是一个存储事务日志文件路径名的方便地方。在INFORMIX-SE下一个命
名为syslog的表不能存于登录的一个数据库中。(一般地,不宜使用以sys-开始的表
名,而 syslog 是不允许的。)

-400 试图在未打开的游标上进行Fetch。

这个 FETCH 语句命名一个从未打开或已经关闭的游标。检查程序逻辑并检查它将在此
之前打开该游标,而且没有意外地关闭它。除非一个游标用WITH HOLD说明,它自动地
由一个COMMIT WORK 或 ROLLBACK WORK语句 关闭。

-401 试图在 NULL 游标上进行Fetch。

这个 FETCH 语句传递一个无效的游标数据结构或一个 null 指针。该游标可能已经用
FREE语句释放,或者该游标数据结构可能在内存被覆盖。

5.0及以后版本的数据库服务器不返回这个错误代码。参见错误-267 和 -404。

-402 主机变量的地址为 NULL。

检查程序构造 sqlda 和相关数据结构的方法,弄清它被设置为 null 指针的原因。
如果程序是用 INFORMIX-4GL 或其它语言编写的(在这种语言中,sqlda 不是由程序
直接构造的),或者如果该语句只是通过名称来引用宿主变量,这个错误就不应当
产生。如果这个错误产生了,请注意所有的环境状况,并与 Informix 技术支持部门
联系。

-403 接收行的大小与期望的大小矛盾。

这个内部错误说明在数据库服务器和调用它的函数库函数之间通讯有问题。检查你的
程序与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并
与 Informix 技术支持部联系。

-404 一个 NULL 控制块已经作为一个参数传递。

检查程序构造 sqlda 和相关的数据结构的方式;检查它是否以某种方法设置一个
null 指针。如果程序是用INFORMIX-4GL语言或在其内没有用程序直接构造 sqlda
的其它语言编写的,或者如果这个语句只用名字参考了主机变量,这个错误就不应该
出现。请与Informix 技术支持部联系。

在4.1版及更早版本的数据库服务器按所指明的意义上返回这个错误信息。对于5.0版
之后的数据库服务器版本,参见下一个条目。

-404 无游标或语句可供使用。

这个语句为一个游标命名,而此游标已与FREE语句同时发布。重新检视此程序的逻
辑,并检查在到达这个语句之前,所指定的游标是有所说明,打开的,但没有释放。

当使用5.0版本及其後版本时,这出错码的意义如上。对於较老的数据库服务器,参见
上一个说明。

-405 一个主机变量的地址不是严格地匹配的。

检查该程序构造 sqlda 和相关的数据结构的方式;检查它是否以某种方法设置一个不
是字匹配的指针。确认全部主机变量在它们的类型的合适的地址范围。如果程序是用
INFORMIX-4GL 语言或另一种程序员不能在其内控制存储调整的语言编写的,那么这个
错误就不应该出现。如果该错误再出现,请记下全部细节并与Informix技术支持部
联系。

-406 内存分配失败。

在当前语句中某些内容要求为数据存储分配内存,但内存不可使用。几件事情可能导
致这个错误,包括:你的应用有一个内存漏洞;你正在请求比系统允许配置的更多的
资源;或者UNIX系统本身有问题需要重启该系统。

滚回当前事务。设法使这个语句更简单或移动更少的数据。也可以与你的 UNIX 系统
管理员商量解决内存问题或者设法使操作系统给这个程序更多的虚拟内存,以在其内
运行这个程序。在 DOS 系统,退出操作系统命令行,释放一些磁盘空间,并重新
提交你的程序。

-407 从 sqlexec 进程接收到的错误号零。

这个内部错误表示在数据库服务器和调用它的函数库函数之间通讯的问题。检查你的
程序与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并
与 Informix 技术支持部联系。

-408 从 sqlexec 进程接收到无效的消息类型。

这个内部错误表示在数据库服务器和调用它的函数库函数之间通讯的问题。检查你的
程序与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并
与 Informix 技术支持部联系。

-409 当前用户没有发现或不能执行 Sqlexec。

在启动应用程序时,应用程序与数据库服务器进程相联系。该操作使用SQLEXEC
环境变量中的值就做到这一点(对于数据库服务器6.0以前的版本);它应该指向两个可
执行文件之一:INFORMIX-SE 的 sqlexec 或 INFORMIX-OnLine 的sqlturbo
(6.0以前的版本)。通常这些将驻留在由 INFORMIXDIR 环境变量命名的目录的
lib 子目录中。检查你的SQLEXEC 环境变量是否确实正确地设置以及你的帐户是否已
经存取到这些目录和文件。

-410 准备语句失败或没执行。

这个 EXECUTE 语句参考一个尚未准备的语句 id。或者没有执行 PREPARE 语句,或者
虽然执行却返回一个错误代码。检查程序逻辑,确保语句是准备好的且 PREPARE
的返回代码被检测。一个从PREPARE 返回的负的错误码通常反映一个已准备的语句中
的错误。

-411 不能同时指定主机变量和描述符。

这个语句有一个USING DEs criptOR 子句,但它还参考一个用主机变量说明的游标(即
用 SELECT...INTO 或 INSERT ,它们使用 VALUES 子句中的变量)。描述符结构和
主机变量名字的目的都是指定数据值的位置,且只能用一种方法。检查该游标的说明
并决定指定数据值位置的一种方法。

-412 命令指针是 NULL。

这个语句(可能是 EXECUTE 或 DECLARE)参考一个从未准备或已经被释放的动态 SQL
语句。检查程序逻辑,确认语句已经准备好,即 PREPARE 没有返回一个错误代码,并
且在此之前没有用 FREE 语句释放该语句。

-413 试图在未打开的游标上插入。

这个 INSERT 语句命名一个从未打开的或者已经被关闭的游标。检查程序逻辑并检查
它将在此之前打开该游标,而且不会意外地关闭它。一个插入游标是自动地由COMMIT
WORK 或 ROLLBACK WORK语句关闭的。

-414 试图在 NULL 游标上插入。

这个 PUT 语句指定一个无效的游标。该游标可能已经用 FREE 语句释放,或者该游标
数据结构可能已在内存中被覆盖。

-415 数据转换错误。

数据库服务器不能进行一个程序变量和一个数据库字段之间的转换。在许多情况中它
执行自动数据转换,但在这种情况中却不行。例如一个字符串只要包含一个有效数的
数字就将被转换成一个数值类型;或者一个浮点或十进制数将被转换成整数,只要接
收器对该值有足够的精度。检查这个语句,检查每个与匹配的数据库字段没有相同数
据类型的程序变量。

-416 打开语句的USING 选项对于插入游标是无效的。

这个 OPEN 语句参考一个为 INSERT 语句说明的游标。OPEN 的USING 子句在这种情况
是不合适的;它只能用于指定一个SELECT 语句使用的变量。检查程序以确认在这个语
句中是否使用了正确的游标。如果在这个语句使用的游标是正确的,并且如果
INSERT 语句是 DECLARE 语句的部分,你可以在其中直接命名宿主变量。如果
INSERT 语句已经准备好,你可以在PUT 语句的 FROM 子句中指定宿主变量。

-417 FLUSH 只能被用于一个插入游标。

这个 FLUSH 语句参考一个与 SELECT 语句而不是 INSERT 语句结合在一起的游标。
FLUSH 只适合插入游标。检查程序,确认命名了正确的游标。

-418 遇到NULL SQLDA 描述符或主机变量列表。

检查程序构造 sqlda 及相关的数据结构的方式;检查它设置一个 null 指针的原
因。如果程序是用 INFORMIX-4GL 语言或另一个在其内没有用程序直接构造sqlda
的语言编写的,或者,如果这个语句只用名字引用了主机变量,则这个错误不应该出
现。如果该错误再出现,请记下全部细节并与 Informix 技术支持部联系。

-419 在 SQLDA 或宿主变量中的 SQLDATA 指针是 null。

检查程序构造 sqlda 及相关的数据结构的方式;检查它设置一个 null 指针的原
因。如果程序是用 INFORMIX-4GL 语言或另一个在其内没有用程序直接构造sqlda
的语言编写的,或者,如果这个语句只用名字引用了宿主变量,则这个错误不应该出
现。如果该错误再出现,请记下全部细节并与 Informix 技术支持部联系。

-420 不能执行远程 sqlexec。

应用程序正在启动并试图与另一个计算机中的数据库服务器进程连通。为此,它使用
了 SQLHOST 环境变量的内容。检查SQLHOST变量并修改在其它机器中已经启动的
INFORMIX-NET 或 INFORMIX-STAR 服务。

-421 执行远程 sqlexec 的未知服务。

应用程序正在启动并试图与其它机器中的一个数据库服务器连通。它使用来自服务入
口 sql 下的文件 /etc/services的信息,但没有发现该文件。请与在系统上安装
INFORMIX-NET 的人联系。

-422 试图在未打开的游标上刷新。

这个 FLUSH 语句命名一个从未打开的游标,或已经被关闭的游标。检查程序逻辑并确
保它将在此之前打开该游标,而且不会意外地关闭它。一个插入的游标是自动地由
COMMIT WORK 或 ROLLBACK WORK关闭的。

-423 试图在无当前行时执行 FETCH CURRENT。

这个 FETCH 语句请求当前行,但当前行不存在。或者游标刚被打开,或者先前的
fetch返回一个错误代码,也许由于它处在数据的结尾而产生这种情况。在试图使用这
个语句前,检查程序逻辑,并检查使用一个FETCH NEXT语句或其它FETCH
操作以建立一个当前行。

-424 游标已经从这个准备好的语句说明了。

这个 DECLARE 语句把一个游标与一个准备好的语句名结合在一起。然而,另一个
DECLARE 语句已经被执行,并把另外一个游标与相同的语句 id 结合在一起。这种操
作是不被支持的;一个已知语句只能被一个游标结合。检查程序中的全部
DECLARE 语句并确认它们全部参考唯一的语句。本错误信息在5.0及以后的版本中不应
再出现。

-425 当前数据库是由其它用户打开的。

其它用户以排它的方式打开了要求的数据库。在暂停后或当已知的数据库闲置时,再
重复该语句。

-426 提供了未知的值。

这个内部错误不该出现。如果该错误再出现,请记下全部细节并与 Informix
技术支持部联系。

-427 连接用一个不同的 count 调用的 count例程。

这个内部错误不该出现。如果不能找到直接的原因,请记下全部细节并与 Informix
技术支持部联系。

-428 连接例程调用的次数太多。

这个内部错误不该出现。如果不能找到直接的原因,请记下全部细节并与 Informix
技术支持部联系。

-429 指示变量应该是两位字节的整数。

这个语句把一个宿主变量命名为一个指示变量,该宿主变量未被说明为一个小的整
型。返回到一个指示变量的值是一个小的整型值。检查该语句,尤其是作为指示变量
的主机变量的使用。确认指示变量的名字拼写正确且它们的说明是合适的。如果在
一个4GL程序中,该错误应该出现。如果这个错误再出现,请记下全部细节并与
Informix 技术支持部联系。

-430 类型 integer 不匹配大小。

这个内部错误指出在数据库服务器和调用它的库函数之间通讯的问题。检查你的程序
与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并与
Informix 技术支持部联系。

-431 类型 float 不匹配大小。

这个内部错误指出在数据库服务器和调用它的库函数之间通讯的问题。检查你的程序
与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并与
Informix 技术支持部联系。

-432 类型 date 不匹配大小。

这个内部错误指出在数据库服务器和调用它的库函数之间通讯的问题。检查你的程序
与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并与
Informix技术支持部门联系。


-433 类型 money 不匹配大小。

这个内部错误指出在数据库服务器和调用它的库函数之间通讯的问题。检查你的程序
与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并与
Informix 技术支持部门联系。

-434 类型 decimal 不匹配大小。

这个内部错误指出在数据库服务器和调用它的函数库函数之间通讯的问题。检查你的
程序与使用的数据库服务器有相同的软件级。如果该错误再出现,请记下全部细节并
与 Informix 技术支持部门联系。

-435 Time-out 值必须大于等于-1。

在 INFORMIX-ESQL/C 或 ESQL/COBOL中,你为你的回调 函数/例程提供一个非法的
time-out 值。请检查 time-out 值大于等于-1。

-436 当 time-out 值大于等于零时,回调函数必须被定义。

你没有对你的 time-out 值提供一个回调函数。确认你既提供了 time-out 值也提供
了一个回调函数。

-437 连接必须建立在登记回调函数之前。

在连接到一个数据库服务器之前

论坛徽章:
0
3 [报告]
发表于 2005-05-20 14:49 |只看该作者

贴个Informix错误代码中文解释供大家参考

-437 连接必须建立在登记回调函数之前。

在连接到一个数据库服务器之前,试图登记回调函数。首先必须连接到一个数据库服
务器,然后登记回调。

-438 如果 time-out 值是-1,回调函数必须是NULL。

对撤消回调函数提供了一个非法值。给该回调函数传递一个 null 值,而不是一个函
数指针。

-439 数据库服务器当前正在处理一个 SQL 任务。

你试图在一个信号处理函数/例程或一个回调 函数/例程内调用一个 SQL 程序,或试
图执行一个SQL语句。只能使用你的 INFORMIX-ESQL/C 回调函数内部的
sqldone() 和 sqlbreak() 函数库函数。只能使用你的 ESQL/COBOL 回调过程内部的
ECO-SQD 和 ECO-SQB函数库程序。另外,如果你要在INFORMIX-ESQL/C中不寄存你的回
调函数,你可以在你的回调过程中调用 sqlbreakcallback()回调登记函数。如果你要
在 ESQL/COBOL 中不寄存你的回调过程,你可以在你的回调过程中调用 ECO-SQBCB 回
调寄存程序。

-450 不合法的 ESQL 定位器,或4GL中未初始化的 blob 变量。

在这个语句中使用的一个 BYTE 或 TEXT主机变量是无效的。如果这是一个 4GL
程序,该变量没有用 LOCATE 语句初始化,或者定位后被释放。检查程序逻辑,确认
全部的 blob 变量在使用前是定位的。如果这是 ESQL/C,则定位器结构是无效的或未
初始化的。检查全部定位器结构在使用前已分配空间并且已赋值。

-451 定位器缓冲区太小。

定位器结构为一个BYTE 或 TEXT提供值,在这个语句中指定一个内存缓冲区小于该
值(在 loc_bufsize 显示字段中)。实际的大小是在 loc_indicator 中。没有数据被
转换。修改程序使用一个较大的缓冲区,在一个文件中定位该值来代替内存,或在程
序段通过一个用户提供的读取函数传递该值。另外,你可以在 SELECT语句指定一个
值的子串。如果这是一个4GL程序,这个错误不应出现。如果该错误再出现,请记下
全部细节并与Informix 技术支持部联系。

-452 'loc_open()' 失败。

loc_open()函数在定位器结构提供的一个BYTE 或TEXT值,在这个语句中被调用并返回
一个负的返回代码。当该值用用户提供的函数( loc_loctype 包含 LOCUSER)定位时,
这个函数是程序的部分并且你不得不自己诊断它的问题。当该值在一个文件
(loc_loctype 包含 LOCFILE,或在一个4GL程序,该变量已被定位在一个文件)被定位
时,这个错误表示系统提供的loc_open()函数不能打开该文件。可能的原因包括:
该文件不存在;你没有对该文件的读取许可;打开文件太多。

-453 'loc_close()' 失败。

loc_close()函数在定位器结构提供的一个BYTE 或TEXT值,在这个语句中被调用并返
回一个负的返回代码。当该值用用户提供的函数(loc_loctype 包含 LOCUSER)
定位时,这个函数是程序的部分并且你不得不自己诊断它的问题。当该值在一个文件
(loc_loctype 包含 LOCFILE,或在一个4GL程序,该变量已被定位在一个文件)被定位
时,这个错误表示系统提供的 loc_close() 函数不能关闭该文件。

-454 'loc_read()' 失败。

loc_read()函数在定位器结构提供的一个BYTE 或TEXT值,在这个语句中被调用并返回
一个负的返回代码。当该值用用户提供的函数(loc_loctype 包含 LOCUSER)
定位时,这个函数是程序的部分并且你不得不自己诊断它的问题。当该值在一个文件
(loc_loctype 包含 LOCFILE,或在一个4GL程序,该变量已被定位在一个文件)被定位
时,这个错误表示系统提供的 loc_read() 函数不能从该文件读取。

-455 'loc_write()' 失败。

loc_write() 函数在定位器结构提供的一个BYTE 或 TEXT 值,在这个语句中被调用并
返回一个负的返回代码。当该值用用户提供的函数(loc_loctype 包含 LOCUSER)
定位时,这个函数是程序的部分并且你不得不自己诊断它的问题。当该值在
一个文件(loc_loctype 包含 LOCFILE,或在一个4GL程序,该变量已被定位在一个文
件)被定位时,这个错误表示系统提供的 loc_write() 函数不能写到该文件。可能的
原因包括: 磁盘是满的,你没有对该磁盘的写许可;发生了一个硬件错误。

-456 指示器值不能适合宿主变量。

这个内部错误给出在数据库服务器和调用它的库函数之间通讯的问题。检查你的程序
与使用的数据库服务器在相同的软件级。如果该错误再出现,请记下全部细节并与
Informix 技术支持部联系。

-457 数据库服务器意外终止。

你的应用程序正在工作的数据库服务器进程或线索已经终止。DBA 可能关闭该系统。
后面的大多数的可能原因是一个内部错误。寻找操作系统信息可以得到更多的信息。
如果该错误再出现,请记下全部细节并与 Informix 技术支持部联系。

检查伴随这个错误返回的 ISAM 错误代码。如果它是 -129,数据库服务器没有终止,
而只是达到当前用户会话数限制(看错误 -129的解释)

-458 长事务失败。

数据库服务器 (可能是 OnLine 或 INFORMIX-OnLine for NetWare) 用完记录这个事
务的日志空间。没有被完全记录的那个事务不能被滚回,为保护数据库完整性,操作
系统结束该事务并将它自动滚回。事务开始后的全部改变已被取消。终止该应用并重
新计划它,以便每个事务修改较少的行。另外,与 OnLine 管理员联系讨论增加逻辑
日志的数量。准备讨论修改或插入行的数量和每行的大小。

-459 INFORMIX-OnLine 被关闭。

你的应用程序使用的 OnLine 实例已被它的操作者关闭。当数据库服务器再次启动
时,你的当前事务将被自动滚回。在那个时间重新运行你的应用程序。

-460 语句长度超出最大值。

在这个 PREPARE, DECLARE, 或 EXECUTE IMMEDIATE 语句中,语句文本长于数据库服
务器可以处理的长度。对于不同的设备,实际的限制是不同的,但总是放宽的,
多数情况最多为32,000字符。检查程序逻辑,确认某个错误不会使它提供一个比预期
长度要长的串(例如,在内存中覆盖 null 串结束符字节)。如果文本有预期长度,
修改程序使其每次提供较少的语句。

-461 打开文件错误。

这个语句在一个文件和一个BYTE 或 TEXT字段之间转换值。由于定位器结构显示字段
loc_loctype 被设置到LOCFNAME,数据库服务器试图用 loc_fname中的路径名和
loc_oflags中的标志打开该文件。返回一个操作系统错误。检查伴随的 ISAM 错误代
码以获得更多的信息,并寻找操作系统信息。典型的原因包括缺少磁盘空间,文件许
可问题,以及打开文件的个数限制。

-462 文件关闭错误。

这个语句从一个 BYTE 或 TEXT 字段读取一个值到一个文件。数据库服务器将该数据
复制到那个文件,但是,当数据库服务器关闭该文件时,得到一个操作系统错误。检
查伴随的 ISAM错误代码以获得更多的信息,并寻找操作系统信息。典型的原因包括缺
少磁盘空间和硬件错误。

-463 读取文件错误。

这个语句从一个文件将一个值写到一个 BYTE 或 TEXT 字段。当读取该文件时,数据
库服务器得到一个操作系统错误。检查伴随的 ISAM 错误代码以获得更多的信息,并
寻找操作系统信息。

-464 写文件错误。

这个语句从一个 BYTE 或 TEXT 字段读取一个值到一个文件。当写该数据时,数据库
服务器得到一个操作系统错误。检查伴随的 ISAM错误代码以获得更多的信息,并寻找
操作系统信息。典型的原因包括缺少磁盘空间和硬件错误。

-465 没有更多的内存给定位器缓冲区。

这个查询返回一个位于内存的 BYTE 或 TEXT值,并且定位器结构(在 loc_bufsize
设置-1)请求数据库服务器分配内存。不可能为缓冲区得到必要的内存。如果你能用
操作系统方法为你的程序分配更多的数据空间内存,则照此处理并再次运行它。除此
以外,你可以在一个文件中定位值,或用一个子串选择一部分值。如果这是一个4GL
程序,则该错误不应出现。在DOS系统,退出到操作系统命令行,释放一些磁盘空
间,并重新提交你的程序。如果该错误再出现,请记下全部细节并与Informix技术支
持部联系。

-466 文件长度错误。

这个语句从一个文件将一个值存储在一个 BYTE 或 TEXT 字段。定位器结构在
loc_locsize 为该数据制定一个长度,但是,数据库服务器在读取足够数据之前发现
文件结束。检查程序,确认输入文件的定位是合适的,并指定了正确的长度。如果该
文件应该读取到它的结束,指定一个-1的长度。如果这是一个4GL程序,则这个错误不
应该出现。如果该错误再出现,请记下全部细节并与Informix技术支持部联系。

-467 指示器对象遗漏。

这个程序用 -icheck标志编译,且当前的SQL语句返回一个截段的或null值,对这个值
将正常地设置一个指示器,然而,没有指示器变量指定到一个宿主变量。修改程序使
用指示器变量。

-468 不能从系统获得用户id: 不能开始数据库服务器。

你的应用正试图打开与一个数据库服务器的通讯。作为该操作的一部分,必须从系统
口令文件读取你的用户id,但这个工作失败了。参考操作系统错误信息,可以获得更
多的指导信息。与系统管理员商量,确认用户id的文件对全部用户是可读的。

-469 本描述符不存在。

指定的系统描述符区域的名字在系统描述符区域列表中不存在,所以它没有被分配。
必须先执行ALLOCATE DEs criptOR 语句分配好描述符的名字,然后才能使用它。

-470 出现的值必须大于零。

如果在 ALLOCATE DEs criptOR 语句中包含 WITHMAX <出现>;子句,则必须指定一个
大于零的<出现>;的值。改变<出现>;的值成正的整数,并再次执行ALLOCATE
DEs criptOR语句。

-471 使用了一个无效的描述符名字。

本错误在 SQL 描述符的名字是一个空字符串或是一个未被初始化的宿主变量时
产生。描述符的名字遵循和标识符一样的命名规则。检查描述符的名字并检验它已经
用SET DEs criptOR 语句设置或用ALLOCATE DEs criptOR 语句分配或被初始化。

-472 出现的值超出范围。

改变 COUNT 语句的值使其小于或等于<出现>;的值并且大于零,然后再试一次。

-473 指定数据类型不是X/Open标准类型本错误发生在GET DEs criptOR 或 SET
DEs criptOR语句在X/Open 方式下执行,并且类型字段的值不是X/Open的标准类型的
时侯。再次检查X/Open代码的数据类型并确认使用的类型正确。

-474 未知的字段类型。

一个未知的字段类型已经被请求。检查你正使用的是X/Open 方式下的有效字段类型之
一,并再试一次,有效的字段类型是TYPE、LENGTH、PRECISION、SCALE、NULLABLE、
INDICATOR、DATA和NAME。

-475 在 GET 语句中,如果 DATA 为空,则 INDICATOR 必须被指定。

这一X/Open规则说明当DATA为空时必须在 GET DEs criptOR 语句中请求
INDICATOR 值。

-476 当类型为 SQLCHAR 时,LENGTH 字段必须被指定。

当使用 SET DEs criptOR 语句,并且 TYPE 设置为SQLCHAR时,则 LENGTH
字段在同一个 SET DEs criptOR语句中也必须被指定和设置。

-477 缓冲区太小。

在 GET DEs criptOR 语句中,指定用来存储 NAME 表项的缓冲区(字符宿主变量)太
小。增大缓冲区大小并再次调用 GET DEs criptOR 语句。本出错信息在宿主变量是
FILE 类型时也会被显示,而且用于存储其名字的缓冲区是太小的。

-478 用户必须指定TYPE。

在初始状态,当用户执行一个 SET DEs criptOR 语句时,必须指定 TYPE 作为要设置
的字段之一。在SET DEs criptOR 语句中设置 TYPE 字段并再次执行。

-479 DESCRIBED字段数大于分配的空间。

在表中的字段数大于分配的描述符。使用ALLOCATE DEs criptOR 语句去重新分配一个
更大的出现值,并重试 DESCRIBE 语句。

-480 有相同名字的描述符已经存在。

具有相同名字的一个系统描述符区域已经被分配,所以本描述符是不唯一的。在
ALLOCATE DEs criptOR 语句中改变描述符的名字,使描述符成为唯一的,并再次执行
本语句。

-481 无效语句名或语句没有被PREPARE。

语句还没有被准备或者使用的语句名字不是有效的。有效的语句名字是在1个字符至18
个字符之间; 它由非数字字符开始,并且不包含任何空格及除下划线以外的非字母数
字字符。

-482 对非 SCROLL 游标的无效操作。

用户不能用非滚动游标发出FETCH PRIOR、FETCH FIRST、FETCH LAST、 FETCH
CURRENT、FETCH RELATIVE n、或FETCH ABSOLUTE n 语句。要这样做,必须首先将游
标说明为滚动游标。

-483 SQL 描述符的名字太长。限于18个字符。

SQL 描述符的名字不能超过18个字符。

-484 语句/游标的名字太长。限于18个字符。

语句或游标的名字必须是从1个字符到18个字符。

-485 宿主变量的个数与 SELECT 列表不匹配。

这一错误仅当用户的数据库符合ANSI标准时才会发生。该错误表示在 ESQL 语句中的
宿主变量的个数与由数据库服务器返回的值不一样。此外,一个警告标志被置于
sqlca的 sqlwarn 结构的第3个结构成员中。

执行下面的 ESQL/C 实例中的第二个语句返回本错误:

$create table mytab (i integer, f float)
$select * into :var1 from mytab; --error

如果用户的数据库不符合ANSI标准,本语句及类似语句会没有错误地完成,而且宿主
变量的值顺次置为各自的返回值。如果返回的值小于主机变量的值,则余下的宿主变
量是未被定义的。在符合ANSI标准的数据库中,一个警告标志被置于sqlca的
sqlwarn 结构的第3个结构成员中。

-486 在数据转换期间发现不合法的数据类型。

在系统描述符 sqlvar 表项找到的数据类型或者是不合法的,或者是未初始化的。不
能使用 GET DEs criptOR语句从未初始化的 sqlvar 获取一个值。

-487 游标只能被说明为静态的或者动态的。

指定的 SQL 语句要求用户把游标说明为静态的或动态的。依据所要求的游标类型把
游标说明为静态的或动态的,并重试指定的操作。

-488 无效的游标操作。

试图对一个游标进行无效的操作。为 SELECT 语句说明的游标不能在PUT 语句中使
用。同样,为INSERT 语句说明的游标不能在 FETCH 语句中使用。检查程序并重
试。

-489 异常号超出范围。

被请求的异常号或者小于1,或者大于诊断区域的诊断表项数。

-490 建立数据库没有 NLS 功能。

用户建立了一个缺少 NLS 功能的数据库。

-491 DBNLS 未设置(LC_COLLATE 必须是<字符串值>;)

把环境变量 DBNLS 设置为一个适当的值。确认LC_COLLATE被设置为指定的<字符串
值>;。

-492 LANG 或 LC_COLLATE 环境变量无效。

用户对环境变量 LANG 或 LC_COLLATE 指定了一个无效的值。

-493 DBNLS 未设置(LC_CTYPE 必须是<字符串值>;)

把环境变量 DBNLS 设置为一个适当的值。确认LC_CTYPE 被设置为指定的字符串值。

-494 LANG 或 LC_CTYPE 环境变量无效。

用户对环境变量 LANG 或 LC_CTYPE 指定了一个无效的值。

-495 LANG 或 LC_MONETARY 环境变量无效。

用户对环境变量 LANG 或 LC_MONETARY指定了一个无效的值。

-496 LANG 或 LC_NUMERIC 环境变量无效。

用户对环境变量 LANG 或 LC_NUMERIC 指定了一个无效的值。

-497 LANG 或 LC_TIME 环境变量无效。

用户对环境变量 LANG 或 LC_TIME 指定了一个无效的值。

-498 不良的 ixtomsg 文件。请检察安装。

保存有 SQLCODE 和 SQLSTATE 值的映射表的ixtomsg文件的版本是不合法的。
ixtomsg 文件被定位在目录$INFORMIXDIR/msg中。请检查文件的数据和大小。如果错
误再次发生,则请记录所有的情况并和Informix技术支持部联系。

-500 聚类索引<索引名>;在表中已经存在。

一个表一次只可以在一个索引上被聚类。本表已经在索引上被聚类,其名字如所示。
要在另一个索引上聚类之前,必须执行 ALTER INDEX <索引名>;TO NOT
CLUSTER,使其成为未被聚类的。要查看哪一个表在哪一个索引上被聚类,查询
sysindexes 和 systables 如下:

SELECT tabname, idxname FROM systables T, sysindexes X WHERE T.tabid =
X.tabid AND X.clustered = 'C'

-501 索引<索引名>;已经未被聚类。

表不再在(如果曾经在)本索引上被聚类。确认本索引是用户意指的索引;如果这
样,则不必变更本索引。查看哪一个表已被聚类的方法,参见出错号 -500的讨论。

-502 不能聚类索引。

当数据库服务器以行的聚集顺序建立表的新拷贝时,得到一个不期望的错误。检查
ISAM 出错代码以获取更多的信息。典型的原因包括磁盘空间的短缺。

-503 锁定的表太多。

在本主机操作系统的数据库服务器中,有一个关于一次可锁定的表的数量的限制。它
不能锁定用户请求的表。滚回当前的事务,然后重新设计操作以锁定较少的表,或者
代之以行级的锁定,或者以互斥方式打开数据库。

-504 不能锁定视图。

本 LOCK TABLE 命令不能被执行,因为指定的表实际是一个视图。只有实际的表可以
被锁定。滚回当前的事务。然后重新设计操作针对视图所基于的实际的表进行工作,
或者以互斥方式打开数据库。

-505 在 UPDATE 中的字段数与 VALUES 的数目不匹配。

本 UPDATE 语句使用一个 SET 子句,在其中一个字段名字的列表设置为等于表达式
的列表,或者等于SELECT语句。等式左边的字段数并不等同于右边产生的数据值。滚
回当前的事务,然后重写语句。如果表达式的列表被使用,检查标点以确认每个表达
式是不同的。如果SELECT 语句被使用,检查看有多少字段返回。

-506 没有更新所有字段的许可。

用户的账户已经被授予更新特别字段的权限,但是本 UPDATE 语句更新所有的字段,
或者更新用户没有权限的字段。与表的拥有者联系或与本数据库中某个有数据库管理
员权限的人员联系,并要求授予完全的UPDATE 权限。列出表的拥有者的方法,参见
出错号 -313的讨论。

-507 游标 <游标名>; 没有找到。

在本 UPDATE 或 DELETE 语句中 WHERE CURRENT OF子句命名的游标不存在。重新审
查名字的拼法。如果是用户所要的名字,则检查 DECLARE 语句并确认该语句已被执
行。同时还要确认游标没有用 FREE 语句释放。

-508 不能改名临时表。

本 RENAME TABLE 语句不能被执行,因为指定的表是临时的。不能改名一个临时表。
重新审查表名的拼法。如果是用户所要的名字,取消它,用不同的名字再建立一次。

-509 不能改名临时表中的字段。

本 RENAME COLUMN 语句不能被执行,因为指定的表是临时的。不能在临时表中重命
名字段。重新审查表名的拼法。如果是用户所要的名字,取消它,用不同的字段再建
立一次。

-510 不能为临时表 <表名>; 建立同义词。

本 CREATE SYNONYM 语句不能被执行,因为指定的表是临时的。重新审查表名的拼
法。如果是用户所要的名字,则必须重新设计应用程序:或者使表变为永久的,或者
不使用同义词。

-511 不能修改系统目录 <表名>;。

不允许用户更新、插入或删除本表中的行。如果用户有把握必须这样做,则必须作为
用户 informix 签字。那个用户账户可以修改多数的系统目录表;然而,这是一个有
很大风险的不被推荐的作法,除非得到Informix技术支持部的特别通知。

-512 对参考的字段没有参考权限。

用户对参考的字段没有参考权限。参考表的拥有者,或者有参考权限的用户带有那个
表的授权选项,可以使用 GRANT 语句授权用户这一权限。

-513 语句不可与本数据库服务器一起使用。

本语句(或其中的子句)被某些数据库服务器支持,但是不被用户当前正使用的数据
库服务器支持。数据库服务器的选择(当有一个选择时) 由 SQLEXEC 环境变量(对
于6.0以前的版本的数据库服务器)的设置决定。如果本语句在以前而不是现在工
作,查看在 SQLEXEC中的变化。

-514 只有 DBA 可以建立、取消或授权其它用户。

本数据定义语句指定由其它用户拥有或作为其它用户授权的表、视图、索引或同义
词。任何这些事情都要求有数据库管理员的权限,而用户在本数据库中没有这一权
限。如果用户意欲在自己拥有的对象上工作,重新审查语句的标点;在某处你已限定
具有另一帐户的user-id的名字。否则,要求DBA为你授权DBA权限,或者直接为你做
这些操作。

-515 约束<约束名>;已经被取消。

试图在同一个 ALTER TABLE 语句中取消一个已经被取消的约束。

-516 系统错误 - 临时输出文件还未建立。

这个内部错误表示在数据库服务器和调用它的库函数之间的通信中出了问题。检查用
户程序与数据库服务器在同一软件级。如果错误再次发生,则请记录所有的情况并和
Informix技术支持部联系。

-517 索引的总大小太大或者索引中有太多的部分。

所有的数据库服务器有关于可以在索引中包含的字段数的限制,及关于键(字段宽度
之和)的字节总数的限制。本CREATE INDEX 语句对于本数据库服务器将超过那个限
制。所有的数据库服务器支持至少8个字段及126字节的宽度。OnLine分别允许16和
255。

-518 子约束<约束名>;未找到。

如果这个内部错误再次发生,则请记录所有的情况并和Informix 技术支持部联系。

-519 不能修改字段成不合法的值。

本 UPDATE 语句的值中的一个是基于一个错误的表达式。检查每个 SET 语句中表达式
的正确性,特别注意内置函数如 LENGTH 及 DATE 的用法。

-520 不能打开数据库tblspace。

OnLine数据库服务器不能定位在存储有本命令要参考的表的磁盘分区。与OnLine管理
员联系以找出问题之所在。可能包含该tblspace的大块已经脱机。

-521 不能锁定系统目录<表名>;。

不允许锁定任何一个包含系统目录的表。这些表是所有用户在任何时间都需要的。数
据库服务器正确地处理对它们的并行访问,所以,用户可以从程序中直接删除这些语
句。

-522 表<表名>;在查询时不被选择。

使用一个相关的名字使字段名在 GROUP BY 子句或在 SET 子句合格。考虑在作为触发
动作的存储过程中重写语句,传递作为参数的字段值。在任何情形下,必须重写语句
且在GROUP BY子句或 SET 子句中没有使用相关的名字。

-523 只能恢复、修补或取消表。

本语句(RECOVER、REPAIR或DROP)指定一个视图。然而,这些语句只支持真实表而不
支持视图。在DROP的情形下,如果要取消视图中使用的表中的任何一个表,则视图也
同时被取消。要恢复或修补这种表,必须恢复或修复这些表在其上已有视图定义。列
出是视图的表的名字的方法,参见出错号-394的讨论。

-524 锁定表只能在事务内使用。

因为本数据库有一个事务日志,所以表只能在事务内锁定。重新审查程序并确保本语
句之前已发出一个 BEGIN WORK 语句启动事务。

-525 不能满足参考的约束<约束名>;。

在ALTER TABLE 或SET语句期间,你增加或激活了一个由表中损坏的数据的参考约束。
检查正参考字段的数据(子键)在被参考字段(父键)中存在。

-526 不允许修改滚动游标。

对一 DECLARE 子句,则子句 FOR UPDATE不允许和 SCROLL 关键字在一起。对一符合
ANSI标准的数据库(在其中,当说明游标要修改时,FOR UPDATE 子句是不需要的)中
的 UPDATE语句:则本语句命名的游标用 SCROLL 关键字说明,并且不能用于更新。滚
动游标的实现方法使对表的更新不安全,因为它有时不反应选定行的当前状态。如果
用户要使用滚动游标来检查行,然后更新它们,可以重新用下面的方法设计应用程序
(其中之一) :使用滚动游标同时选择每行的ROWID。再次说明非滚动游标选择进行
更新的行是基于其ROWID。当更新一选定行时:

* 使用由滚动游标找到的 ROWID 值打开更新游标。

* 取出该行并检查出错代码 (行可能已被删除)。

* 如果fetch成功,检验行的内容未从滚动游标(游标现在是锁定的,因此不
能被进一步修改,但是在两个fetch之间它可能已经被修改) 的选定中改变。

* 如果游标未改变,则使用非滚动游标修改。

* 关闭非滚动游标。

* 本过程确保修改反应当前表的状态而保持了滚动游标的方便。一个由新近取
出的行的ROWID 的fetch常常没有磁盘活动并且不会花费很多时间。

-527 本系统中加锁方式不可用。

用户试图使用 SET LOCK MODE TO WAIT 语句于INFORMIX-SE,而 INFORMIX-SE数据库
服务器使用CREATE LOCKING而不是System V的锁定。如果错误再次发生,则请记录
所有的情况并和Informix 技术支持部联系。

数据库服务器不能执行SET LOCK MODE TO WAIT 语句,因为主机操作系统对于锁定并
允许等待锁的释放没有适当地支持。本系统中,用户的程序在表或行被锁定(有出错
号如-233或-378)时将被通知;程序决定在下一步要做什么,例如,回滚事务并再
试。

-528 最大的输出行大小<最大大小>;被超过。

本语句选择的总字节数超过数据库服务器和程序间可以传递的最大值。确认选择的字
段是所需要的字段;检查例如没有由于错误而命名了很宽的字符字段,或者忘记指定
一个子字符串,或者指定了过长的子字符串。如果选择是所需求的,把SELECT 重写
成两个或更多的语句,每个语句只选定字段中的某一个。如果这是几个表的联结,则
最好选择所有想要的数据 INTO TEMP;然后选择临时表的专用字段。如果这是一个
借助程序中游标的fetch,则可以修改程序如下。首先,改变游标以便只选择想要的
行 ROWID,第二,用一组 SELECT 语句扩大 FETCH 语句,每个语句选择一个或几个
字段 WHERE ROWID= 保存的row-id。

-529 不能连到共享内存。

本出错信息在6.0版以前的版本中出现。用户的应用程序不能初始化其对数据库服务器
的连接,因为用户正使用一个共享内存工具。要么数据库共享内存还未被初始化,
要么最大个数的用户已经启动使用系统。检查伴随的 ISAM 出错代码以获取更多的
信息。

-529 不能连到事务。

本出错信息在6.0版以前的版本中出现。用户的应用程序不能初始化其对数据库服务
器的连接,因为用户正使用一个共享内存工具。要么数据库共享内存还未被初始化,
要么最大个数的用户已经启动使用系统。检查伴随的ISAM 出错代码以获取更多的
信息。

-530 检查约束<约束名>;失败。

放置在表字段的检查约束已经被扰乱。要找与字段相联系的检查约束,可以查询
syschecks系统目录表。然而,用户在查询syschecks之前必须知道检查约束的
constrid。(constrid在sysconstrains系统目录表中赋值。)使用下面的子查询以显
示<约束名>;的检查约束。

SELECT * FROM syschecks WHERE constrid =
(SELECT constrid FROM sysconstraints WHERE constrname =
constraint-name)

-531 在视图中存在有重复的字段<字段名>;。

本 CREATE VIEW 语句给出一个字段名的列表,并且其中至少有一个字段在列表中出
现两次。重新审查字段名列表并确认每个字段只出现一次。

-532 不能变更临时表<表名>;。

所示的表只是一个临时表,它将在会话期结束时消失。这样的表不能被改变。要改变
表的形式,直接取消并重新建立之。

-533 范围大小太小,最小值为数字k。

为磁盘范围(无论EXTENT SIZE子句或NEXT SIZE子句)指定的大小必须至少四倍于磁
盘页大小,如所示。通常,把 EXTENT SIZE 设置得足够大,以容纳在最初估计的所
有的行,而设置 NEXT SIZE为其八分之一或四分之一。

-534 表被锁住,不能在表中插入新行。

4.0及以后版本的数据库服务器不返回本错误。在较早的版本中,其意义与错误号-271
(带ISAM出错代码-113)相同。滚回当前事务,并在表被解锁以后重新运行。

-534 不能开启 EXPLAIN 输出文件。

SET EXPLAIN ON语句已被执行,且数据库服务器正试着开启目前工作目录下的
sqexplain.out文件。有某种操作系统的错误阻止了它。详情参见ISAM错误码。更详
细部份可查看操作系统错误信息。可能的原因有:缺少对目前目录的应有权限;磁盘
空间满。4.1版开始有这条出错信息。

-535 已在事务中。

本 BEGIN WORK 语句是多余的;事务已经在处理。如果这是一个程序,重新审查其逻
辑以确认没有意外的失败结束先前的事务。

-536 子约束中的字段数与父约束中的字段数不匹配。

正参考的字段(子键)数与参考约束中被参考的字段(父键)数不匹配。检查在被参
考和正参考字段间的一对一对应关系。

-537 约束字段<字段名>;在表中没有找到。

在约束定义中指定的字段不存在。

-538 游标<游标名>;已经被说明。

在 DECLARE 语句中命名的游标已经在较早执行的DECLARE 语句中命名。可能同一个
DECLARE 语句正在一个循环中被执行;也可能程序要为此游标执行一个 FREE
语句,但没有执行。重新审查程序逻辑以确认对每一个游标只执行一次 DECLARE
(释放的游标除外)。

-539 DBTEMP太长

在DBTEMP环境变量中的路径名超过关于路径名长度为80个字符的限制。用户必须把临
时目录定位在目录结构的较高层次上。从版本5.01开始,INFORMIX-SE
数据库服务器使用DBTEMP环境变量,而 INFORMIX-OnLine 动态服务器不使用。

-540 在约束上写失败

定义约束时发生错误。可能用户已经定义了一个约束,其名字与另一个约束、表、或
索引重复。如果是这种情形,指定一个唯一的名字重复此语句。否则,核查 伴随的
ISAM 出错代码以获取更多的信息。

-541 用户没有 ALTER权限

用户在变更表、名称、类型、或字段数以前,必须有正确的权限。用户必须是表的拥
有者或者在数据库中有数据库管理员的权限,或者必须有表的拥有者或 DBA 批准的
ALTER权限。见出错号-313关于用DBA权限列出表的拥有者的方法的讨论。

-542 在约束、触发器或索引中不能多次指定同一字段。

在更新触发器的触发字段表中多次命名同一字段。删除重复出现的字段名并重试。在
索引表中如果有重复的字段名,也会出现本错误。

-543 ESCAPE 字符必须是一个单字符。

在 WHERE 子句中,ESCAPE微子句包含多个字符作为一个字符。重新审查子句的标点
并加以修改使其只指定一个字符。

-544 统计内不能有统计。

语句包含参数表内对于另一个统计函数的统计函数调用,例如SUM(MAX(COLUMN))。这
种操作是不被支持的,因为所有的统计函数是在行的同一组进行计算的。如果这种表
达式不是想要的表达式,查找遗漏的或放错地方的圆括号。如果这种表达式是想要的
表达式,就必须重新想办法。例如,可以选择 MAX 值放入临时表中,然后取其
SUM。

-545 对于表<表名>;没有写许可。

检查伴随的 ISAM 出错代码以获取更多的信息。对于数据库服务器,一个数据库是一
个具有名字<数据库名>;.dbs的目录,而表和索引是目录内的文件。用户必须具有所有
这些文件的读写访问权限,以便正常地运用数据库函数。

-546 当建立视图<视图名>;时,不能有宿主变量。

本语句或者准备、 或者执行一个 CREATE VIEW 语句,在此语句中 SELECT 语句访问
宿主变量。这种操作是不被支持的。SELECT语句在视图中可以从任何程序中被执行,
并且可以不依赖于程序的变量。重新审查 CREATE VIEW语句,并确认该语句不包含
任何宿主变量的名字、INTO子句,也不包含?通配符。5.01版以后的数据库服务器不使
用本错误信息。

-547 必须在数据库所在目录前滚数据库。

在执行 ROLLFORWARD 语句之前,使当前目录成为为数据库包含<数据库名>;.dbs
目录的目录。然后再次执行语句。

-548 在 TEMP 表中不允许参考约束和触发器。

用户不能在一个临时(TEMP)表中建立约束或触发器。考虑建立临时表作为数据库中
的参数表。如果选项可行,则建立该表,然后在其上建立触发器。

-549 在 UNIQUE 约束中,字段<字段名>;不是表中的字段。

出现在为 UNIQUE 子句列表的字段中显示的字段,不是在表中定义的字段之一。检查
在本语句中所有字段名字的拼法。如果所有字段的拼法正确,则检查表的定义。见出
错号 -328 关于在表中列出所有字段名的方法的讨论。

5.01版本以后的数据库服务器不使用本出错信息。

-550 在约束中的字段总长太长。

列在 UNIQUE、PRIMARY KEY 或者FOREIGN KEY 子句中的所有字段的总长是有限
的。这个限制取决于使用的数据库服务器,而所有的服务器支持 120 字节的总长。
这个限制,和复合索引中的所有字段总长的限制是一样的。更详细的信息,请参阅
《Informix SQL 指南:语法》中CREATE TABLE 语句。

-551 约束包含太多的字段

在 UNIQUE、PRIMARY KEY 或 FOREIGN KEY 子句列出的字段是有限制的。限制
(limit)取决于使用中的数据库服务器,但所有的数据库服务器都支持8个字段。
在复合索引中的字段数,limit和restriction是一样的。要获取附加的信息,
请参考 Informix Guide to SQL: Syntax 中的CREATE TABLE 语句。

-552 在多语句准备中,Blob 主机变量不被允许。

本 EXECUTE 命令执行一个有准备的多重语句列表。在列表中,通配符? 提供的一个
或多个主机变量是对于TEXT 或 BYTE 的定位器结构。这种操作是不被允许的。访问
TEXT 或 BYTE变量的语句可能已准备好并被执行,但它们必须是单个语句,而不是多
语句列表的一部分。

-553 在$INFORMIXDIR/bin中未找到mkdbsdir。参考安装说明。

可执行程序 mkdbsdir 在 CREATE DATABASE 语句期间,用于建立数据库目录的初始
内容。它由数据库服务器分配并且应该在 INFORMIXDIR 环境变量命名的目录的子目
录bin 中找到,但是没有找到。检查INFORMIXDIR 环境变量的设置,然后咨询软件
安装人员。

-554 在本数据库服务器中不允许的句法。

使用的数据库服务器不支持本语句或某些子句。程序启动时,由SQLEXEC环境变量(对
6.0及以前版本的数据库服务器而言)决定选择所使用的数据库服务器。在Informix
数据库服务器之间,语句的句法方面有几个小的区别。例如,使用OnLine的CREATE
TABLE 语句支持子句 IN <数据库空间名>;(不使用引号字符)而其它的数据库服务器
支持子句IN '<路径名>;'(要求有单引号)。

-555 在多重查询准备中,不能使用选择或任何数据库语句。

由 PREPARE 提供的语句文本有由分号分开的多重语句,其语句之一是 SELECT、
DATABASE、CREATE DATABASE或CLOSE DATABASE。这些语句必须总是准备成单语句文
本。核查语句文本字符串并确认想要多重语句;然后修改程序单独执行这四种类型的
语句。

-556 在另一个数据库服务器上不能建立、取消或修改对象。

本语句试图建立、取消或修改不是当前数据库的外部数据库中的对象。用户只可以读
外部数据库的内容。如果使数据库成为当前的数据库,可以修改其内容。重新审查在
外部数据库<数据库名>;访问目标,开始<数据库名>;时名字的所有用法。

-557 在<级别数>;级同义词映射后,不能定位另一个服务器表。

本问题中命名的表之一事实上是一个同义词,指向当前数据库的外面。其命名指向数
据库外面的另一同义词,并且没有发现一个实际的表来计数同义词。数据库服务器已
经放弃一个无结束的同义词链情况的查询。可以通过询问systables 和
syssyntable访问外部数据库,重新审查在当前数据库中的同义词如下:

SELECT T.tabname synonym, servername, dbname, user, S.tabname
FROM systables T, syssyntable S WHERE T.tabtype =
'S' AND T.tabid = S.tabid AND S.btabid IS NULL

通过外部数据库追踪一个同义词链,在外部数据库中使用一个类似的询问,代替每次
前一个询问返回的servername、dbname和tabname的值。

SELECT T.tabname synonym, servername, dbname, user, S.tabname
FROM dbname@servername:systables T,
dbname@servername:syssyntable S WHERE T.tabtype = 'S'
AND T.tabname = 'tabname' AND T.tabid = S.tabid

当本查询没有返回行时,请求的<表名>;没有作为一个同义词在那个数据库中定义(它
是一个表或视图,或没有定义)。

-558 在 $INFORMIXDIR/bin 中未找到 changrp。请参考安装说明。

本命令要求有名字为 changrp 的可执行程序。该程序通常作为数据库服务器的一部
分被安装,并应在由环境变量 INFORMIXDIR 命名的目录的子目录bin之下。
检查该变量的值,然后咨询安装软件的人员。

-559 在同义词的上面不能创建同义词。

本 CREATE SYNONYM 命令命名另一同义词。产生一个同义词链是不被允许的。
见出错号-218关于列出所有同义词的方法的讨论。为使具有同样意义的第二个同义词
放在第一位,找出另一同义词的意义,然后造一个新的同义词去访问一个基表。对一
个给定的同义词,要看到基表,按如下方法询问systables和syssyntable,代替同义
词的名字:

SELECT T.tabname synonym, S.*
FROM systables T,
syssyntable S
WHERE T.tabname = name
AND T.tabid = S.tabid

如果btabid在结果显示中定义,则该同义词是指tabid的当前数据库,否则指一外部数
据库。

-560 有tabid<号码>;的同义词在systables中未找到。

systables或syssyntable系统目录,或它们中之一的索引已经被损坏。运行bcheck
或secheck实用程序。准备重建所有的同义词。

-561 对日期时间值不能进行求和及平均值计算。

本语句应用一个统计函数(如 SUM)于一个具有类型DATETIME 的字段。该函数不是
对这种数据类型定义的,因为不是算术类型。重新审查统计函数的用法,并必须修改
原查询。

-562 数据库转换失败。

用户正运行一个数据库服务器的新的版本,并且第一次已用这一级的软件打开了一个
数据库。数据库服务器试图通过定义一个附加的系统目录表自动地更新数据库。发生
一个意外的错误。检查 伴随的ISAM 出错码以得到更多的信息。如果错误再次发生,
则请记录所有的情况并和 Informix技术支持部联系。

5.01及以后版本的数据库服务器不使用该错误信息。

-563 不能为数据库转换获取排他锁定。

正在运行数据库服务器的新版本,并且刚好首次以这个软件级别打开了一个数据库。
该数据库服务器已经试图通过定义附加的系统目录表来自动地升级数据库。然而,
这需要锁定数据库,以便独占使用,来完成这次转换,但其它用户已将该数据库打开
了。请稍候,然后再重新试一下这个语句。到那时,这个数据库可能被释放了(或
者其它用户的操作已将它更新了)。

-564 不能排序行。

这个内部错误反映执行排序时的意外情况。检查ISAM 出错码以得到更多的信息。如果
错误再次发生,则请记录所有的情况并和 Informix 技术支持部联系。

-565 不能读已排序的行。

这个内部错误反映执行排序时的意外情况。检查ISAM 出错码以得到更多的信息。如果
错误再次发生,则请记录所有的情况并和 Informix 技术支持部联系。

-566 不能开始排序。

这个内部错误反映执行排序时的意外情况。检查ISAM 出错码以得到更多的信息。如果
错误再次发生,则请记录所有的情况并和 Informix 技术支持部联系。

-567 不能写已排序的行。

这个内部错误反映执行排序时的意外情况。检查ISAM 出错码以得到更多的信息。如果
错误再次发生,则请记录所有的情况并和 Informix 技术支持部联系。

-568 不能访问不带日志的外部数据库。

本语句访问一个当前数据库以外的数据库。然而,当前数据库使用事务日志,而外部
的数据库不使用。这种操作是不被支持的。在单个事务中使用的数据库必须全都使用
日志或者全都不使用日志。

-569 不能访问带日志的外部数据库。

本语句访问一个当前数据库以外的数据库。然而,当前数据库不使用事务日志,而外
部的数据库使用。这种操作是不被支持的。在单个事务中使用的数据库必须全都使用
日志或者全都不使用日志。

-570 不能访问外部的 ANSI 数据库。

本语句访问一个当前数据库以外的数据库。然而,当前数据库是不符合ANSI标准的,
而外部的数据库符合。这种操作是不被支持的。在单个事务中使用的数据库必须全
都是符合ANSI标准或者全都不符合ANSI标准。

-571 不能访问外部的非 ANSI 数据库。

本语句访问一个当前数据库以外的数据库。然而,当前数据库是符合ANSI标准的,而
外部的数据库不符合。这种操作是不被支持的。在单个事务中使用的数据库必须全
都是符合ANSI标准或者全都不符合ANSI标准。

-572 指定的等待持续时间太长。

用户在 SET LOCK MODE 中作为 WAIT 时间可以指定的最大时间是 32767 秒。重新
审查本语句并确认指定的正是所需的以秒计的持续时间。如果是这样,则或者使用一
个较短的持续时间,或者(因为32767 秒大于9个小时)省去持续时间直接指定一个
无限的等待。

-573 在模式 ANSI 数据库中不能使日志设置为缓冲方式。

本语句试图应用 BUFFERED LOG 方式,但数据库是符合ANSI标准的;亦即,数据库由
子句 MODE ANSI建立。遵循 ANSI 的一个方面是,所有的事务在COMMIT WORK
语句执行期间立即记入日志。使用缓冲日志方式必然伴有日志记录的延迟写入,这样
在某些较小丢失事务日志的风险时会改善性能。在标准下不允许这样的风险;符合
ANSI标准的数据库必须使用非缓冲日志方式。

-574 一个子查询返回的不是严格的只有一个字段。

本语句包含一个作为单值使用的子查询(在圆括号内的SELECT语句)。(例如,在相
关操作符如相等的一边)。这样的子查询必须严格的只在一行和一个字段返回;否
则,就会对返回值中哪一个是所需要的这一问题发生疑问。本子查询返回不止一个
值。重新审查所有的子查询并确认它们都最多只返回一个字段(在SELECT 后只列出
一个表达式)而且最多只有一行(在WHERE 子句中测试唯一键)。

-575 LENGTH()要求字符串类型值。

本语句包含应用于不是字符类型(不是 CHAR或VARCHAR)的字段或表达式的LENGTH
的用法。这种操作是不被支持的。重新审查 LENGTH 的用法并确认它们只应用于字符
值。

-576 不能为 TEMP 表指定 CONSTRAINT名。

用户不能为安排在临时表的约束指定约束名(无论是UNIQUE、 PRIMARY KEY、
FOREIGN KEY、或CHECK),这种操作对于临时表是不支持的。然而可以指定一个字段
接收约束中的一个约束,而且当已有一个约束时指定一个字段列表。但是不能使用
CONSTRAINT <约束名>;子句。临时表及它们的索引没有记录在通常的系统目录表中。

-577 字段集中已有同一类型的限制。

用户已安排字段集的约束(可以是 UNIQUE、PRIMARY KEY、FOREIGN KEY、或CHECK
)但是关于那些字段的同一类型的约束已经存在。在 FOREIGN KEY 的情况下,这种
错误只在同一个外码字段集访问同一个已经存在的父码字段集时才会发生。无论约束
在表格创建时发生,还是已经被加入,自从字段存在以后就不能再次加入。

-578 所有者的名字太长。

本语句包含一个限制表、视图、索引及同义词名的所有者的名字,并且所有者的名字
比8个字符的最大值更长。例如 overly_long.tablename。重新审查所有标识符的标点
和拼法;可能遗漏一个空格或逗号使两个名字合成一个名字。选择相关系统目录的拥
有者字段:systables、sysindexes、或syssynonyms,可以检查所有已知拥有者的
名字。

-579 不是同义词的拥有者。

不拥有在 DROP SYNONYM 语句中规定的同义词。要取消一个自己不拥有的对象,
必须要有数据库管理员的权限。

-580 不能取消许可。

REVOKE 语句不能被执行,或者本语句取消一个数据库级的权限而用户不是这一数据
库的数据库管理员,或者本语句取消一个用户帐户名无权取消的表级的权限。重新审
查权限和用户名确认其正确。用如下方法通过询问systabauth从而列出已获准的表级
权限。

SELECT A.grantee, T.tabname FROM systabauth A, systables T
WHERE A.grantor = USER AND A.tabid = T.tabid

-581 装入信息文件错。

SET EXPLAIN 语句不能被完成,因为数据库服务器准备解释输出时,不能找到所使用
的信息样板文件。询问 Informix 软件的安装人员。

-582 数据库没有日志。

本 ROLLFORWARD 语句不能被执行,因为数据库没有事务日志。前滚操作用事务日志
作为其输入,由于没有对任何事务进行日志,所以数据库不能被前滚。

-583 察看许可不再有效 -- 远程目标许可被收回。

本语句需要一个基于外部数据库表的视图(当前数据库以外的其它数据库)。然而在
一个或多个这样的数据库中,用户的账号没有拥有视图使用的表的表级权限;或者用
户对外部数据库的CONNECT 权限已经被取消。关于显示视图定义的方法,参见出错号
-385 的讨论。在视图定义中寻找用数据库名及可能的场地名限定的表的名字。

-584 不能改名系统目录。

RENAME TABLE 语句不能被执行,因为它将改名组成系统目录表中的一个表。这些表
的名字不可以被改变;数据库服务器使用它们。

-585 不能改名系统目录中的字段。

RENAME COLUMN 语句不能被执行,因为它将改名组成系统目录的表中的一个字段。数
据库服务器依赖于这些字段名字供内部需要,并且不能改变这些名字。

-586 游标已经是打开的。

本数据库以与 ANSI 相一致的方式运行 (以 MODE ANSI创建或启动)。按照 ANSI
SQL 的规则,一个游标必须总是在关闭以后才能再一次被打开。重新审查程序的逻
辑。可能最初是要利用Informix 对SQL的扩展:如果游标被重新打开,它就自动地
被关闭和打开。在当前的数据库中这种操作是不被支持的。

-587 不能删除文件<文件名>;。

4.0 及其以上版本不使用本信息。对先前的版本,检查伴随的 ISAM 出错代码以获取
更多的信息。

-588 无效的主机变量号。

用4.1版本启动的数据库服务器检测此内部错误。如果错误再次发生,则请记录所有
的情况并和Informix 技术支持部联系。

-589 在单个事务内不能修改多个场所。

本数据库服务器只支持单场所修改,一个事务内的操作只可以修改网络中一个节点的
数据;事务内前面的某个语句已经修改了一个节点中的数据;当前语句将修改第二个
节点的数据。此语句不被执行。滚回当前事务,根据这一限制检查应用程序,检查
受UPDATE、INSERT、和 DELETE 影响的所有表格的名字,以确认它们都在同一个数据
库中,或者在同一个数据库服务器保持的数据库中。(检查任何同义词的定义。因为
同义词可以使外部数据库中的表格看起来就象在当前的数据库中一样。)

5.01以后版本的数据库服务器不使用本出错信息。

-590 过程高速缓存已经毁损。

如果这个内部错误再次发生,请注意所有的环境状况,并与 Informix 技术支持部门
联系。

-591 字段/变量 <字段名>;/<变量名>;的无效缺省值。

指定的缺省值对于字段或存储的过程变量是错误的类型。字段的缺省值用 CREATE
语句中的DEFAULT子句规定。存储过程中变量的缺省值用过程中DEFINE 语句的
DEFAULT子句规定。

-592 当缺省值为空时,不能指定字段为非空。

本 CREATE 或 ALTER TABLE 语句规定字段不能包含空(NOT NULL 子句),但是也有
一个DEFAULT 子句为新行给出为 NULL 的缺省值。这种不一致是不允许的。

-593 不能为 SERIAL 字段指定缺省值。

本 CREATE 或 ALTER TABLE 语句规定字段的数据类型为SERIAL,但也有一个对于字
段的 DEFAULT 子句。数据库服务器在每次建立一行时为SERIAL字段生成值,所以
DEFAULT 子句是无意义的。

-594 不能为 blob 字段指定非空缺省值。

本 CREATE 或 ALTER TABLE 语句规定字段的数据类型为 BYTE 或 TEXT。而且有一
个DEFAULT 子句为字段规定除 NULL 以外的内容。用户只可以为 TEXT 或 BYTE
数据类型的字段指定缺省值 NULL。

-595 在上下文中不恰当的统计用法。

统计函数在存储过程表达式内的 SQL 语句之外使用或在检查限制之内使用。
下面是这个错误的一个例子:

LET var = MAX(another_var) + 10; -- error

存储过程表达式或检查限制内的表达式,只可以访问一个单值,所以使用统计函数是
无意义的。

-596 不好的 EXIT/CONTINUE 语句。未在<语句名>;循环内部。

存储过程 EXIT 和 CONTINUE 语句必须放在FOREACH,WHILE,或 FOR 循环之内。

-597 [内部的]过早的 End Of Buffer。

如果这个内部错误再次发生,则请记录所有的情况并和Informix 技术支持部联系。

-598 不好的游标名字<游标名>;。

在一个存储过程内部,在 UPDATE/DELETE. . .WHERE CURRENT OF 语句中指定了一个
不存在的游标名字。

FOREACH cur1 FOR SELECT col INTO var FROM tab
UPDATE tab SET col = proc(var)
WHERE CURRENT OF bad_cur_name; -- error
END FOREACH

-599 不能把 INFORMIX-OnLine 句法和 INFORMIX-SE 句法混和在一起。

对 INFORMIX-OnLine Dynamic Server 特定的句法和对INFORMIX-SE 数据库特定的句
法已混淆在同一语句中。使用对你的数据库服务器来说合适的句法。

-600 不能建立 blob。

本语句建立一个BYTE或TEXT值,但某些意外的错误阻止值的建立。滚回当前的事务,
检查 伴随的ISAM出错码以得到更多的信息。可能blobspace或tblspace数据已满。或
者你没有指定一个合法的blobspace。如果错误再次发生,则请记录所有的情况并和
Informix技术支持部联系。

-601 不能删除 blob。

本语句替换或删除一个BYTE或TEXT值,但某些意外的错误阻止旧值的删除。滚回当前
的事务,检查相应的 ISAM 出错码以得到更多的信息;可能有硬件错误或者blobspace
或tblspace的数据有损坏。如果错误再次发生,请记下所有的情况并和Informix技术
支持部联系。

-602 不能打开 blob。

本语句涉及一个BYTE或TEXT值,但某些意外的错误阻止值的定位。滚回当前的事务,
检查相应的 ISAM出错码以得到更多的信息;可能有硬件错误或者 blobspace或
tblspace的数据有损坏。如果错误再次发生,则请记录所有的情况并和Informix技术
支持部联系。

-603 不能关闭 blob。

本语句写一个BYTE或TEXT值,但某些意外的错误阻止完成值的建立。滚回当前的事
务,检查相应的ISAM 出错码以得到更多的信息;可能有硬件错误或者blobspace
或tblspace有数据损坏。如果错误再次发生,则请记录所有的情况并和Informix
技术支持部联系。

-604 不能读 blob。

本语句涉及一个BYTE或TEXT值,但某些意外的错误阻止了对该值的访问。滚回当前的
事务,检查相应的 ISAM 出错码以得到更多的信息;可能有硬件错误或者 blobspace
或tblspace的数据有损坏。如果错误再次发生,则请记录所有的情况并和Informix
技术支持部联系。

论坛徽章:
0
4 [报告]
发表于 2005-05-20 14:50 |只看该作者

贴个Informix错误代码中文解释供大家参考

-605 不能写 blob。

本语句写一个BYTE或TEXT值,但某些意外的错误阻止了值的建立。滚回当前的事务,
检查相应的 ISAM 出错码以得到更多的信息; 可能有硬件错误或者 blobspace
或tblspace的数据有损坏。一个可能的原因是这一字段的blobspace 是满的。另一
个可能是虽然一个新块已分配给blobspace,但是直到另外的块已被记录并且日志文
件已被关闭以后才分配到页面。OnLine管理员可以使用tbmode -l 或onmode -l
命令强制关闭日志文件。如果错误再次发生,则请记录所有的情况并和Informix
技术支持部联系。

-606 无效的 blob 空间名字。

如果本语句涉及一个blobspace(例如CREATE TABLE 语句可以建立具有类型 TEXT
IN <blobspace名>;的字段),但名字无效或不存在。重新审查打算作为blobspace
名字的标识符,如果拼法正确,则咨询OnLine管理员以确定它们是否存在并联机。
如果语句不涉及blobspace,则此时是一个内部错误。如果错误再次发生,则请记录
所有的情况并和Informix技术支持部联系。

-607 Text/Byte 下标错。

本语句涉及使用子字符串符号的 TEXT 或 BYTE 值(名字后跟带方括号的数字)。但
子字符串未写正确。重新审查子字符串的所有用法,确认第一个数字大于零并且不大
于值的长度;第二个数字不小于第一个数字;数字间有逗号分开。

-608 不合法的企图转换 Text/Byte blob 类型。

本语句包含从 TEXT 或 BYTE 值到另外的数据类型的转换。例如,在表达式中把它与
其它类型进行组合或将其插入到另外类型的字段中。这是不支持的;TEXT 和BYTE
字段只可以被选择或被拷贝到同一类型的其它字段。重新对语句进行审查以确认语句
命名的字段是想要的字段,并且数据类型也是所需的类型。

-609 不合法的使用Text/Byte主机变量的企图。

本语句使用一个TEXT或BYTE定位器结构的主机变量,但使用某些其它类型的数据进行
组合(例如在表达式中或将其插入到另一类型的字段中)这是不支持的。这些类型的
主机变量只可以用于选择、建立、或插入同一类型的字段。

-610 索引在blob字段不允许。

这个CREATE INDEX语句命名一个TEXT或BYTE类型的字段;但这些类型是不支持索引
的。原因是没有在这些类型中定义词汇次序,所以数据库服务器不知道如何排序或比
较它们;因而它不能建立一个翻转的索引。可能你对数据有足够的理解,知道如何从
中抽出一个关键值的集合的次序;如果是这样,在同一个表中抽出一个独立的字段并
索引那个字段。

-611 滚动游标不能选定blob字段。

在这个语句中命名的游标与一个返回一个或多个TEXT或BYTE字段的SELECT语句有联
系;同时这个游标和SCROLL关键字一起说明。这是不支持的。原因是通过一个滚动游
标取得的行也是存贮在临时表中的。因为TEXT和BYTE值的大小,这将产生一个不能接
受的时间和磁盘空间的花费。修改游标的说明以选定其它类型的想要的字段,同时
ROWID也进行同样处理。在通过滚动游标取得一行后,使用独立的,非滚动的游标取
得BYTE或TEXT值,WHERE ROWID=<主机变量>;。

-612 Blob在"group by"子句中是不允许的。

这个SELECT语句选定一个或多个BYTE或TEXT值,并且也在GROUP BY子句中指定了那些
字段。这是不支持的。因为没有对BYTE或TEXT值指定词汇次序,数据库服器不能对它
们排序或比较。所以不能在它们的值上对行分组。(这即使在从一个BYTE或TEXT
字段中选定子串时也是对的)。检查SELECT语句以确定在ORDER BY子句中命名了正确的
字段。

-613 Blob不允许在"distinct"子句中。

这个语句指定了DISTINCT值,但它也选定了一个BYTE或TEXT值。数据库服务器不知道
如何比较这些值或认定它们的次序。因此不能给它们排序,也不能定位重复的值。
因而当选定这些数据类型时不能使用DISTINCT关键字。回顾SELECT语句以移去
关键字或只选定普通字段。

-614 Blob不允许在"order by"子句中。

这个SELECT语句选定一个或多个BYTE或TEXT值,并且也在ORDER BY子句中指定了那些
字段。这是不支持的。因为没有对BYTE或TEXT值指定词汇次序,数据库服务器不能将
它们排序(这即使在从一个BYTE或TEXT字段中选定子串时也是对的)。回顾SELECT
语句以确定在ORDER BY子句中命名了正确的字段。

-615 Blob在这个表达式中是不允许的。

这个语句使用了一个如COUNT,SUM,MIN,MAX,或AVG的统计表达式,但将它应用到了
一个BYTE或TEXT数据类型的字段。这是不支持的。回顾函数的使用并确定它们只在简
单字段上应用。

-616 一个blob下标在这个上下文中不允许。

这个UPDATE或INSERT语句指定了一个BYTE或TEXT类型的下标字段作为目标。下标注释
在这个上下文中是不允许的;一个BYTE或TEXT(或任何其它)值必须被完全的替换。
修改语句以给整个字段赋值。

-617 一个blob数据类型必须在这个上下文中指定。

这个语句为一个BLOB(BYTE或TEXT)字段赋一个非BLOB值,或将一个BLOB字段赋给一个
非BLOB字段。二者都是不支持的。BYTE和TEXT值必须被作为整个单元赋给同一类型的
字段。回顾语句确定指定了所要的字段。

-618 拷贝blob数据出错。

这个语句从一行到另一行拷贝一个BYTE或TEXT值,但一些意外的错误干扰了这一操
作。滚回当前的事务。检查相应的ISAM错误的代码以得到更多的信息。可能是一个硬
件错误,或blobspace或tblspace上的数据损坏,或缺少磁盘空间,或一个非法的
blobspace名。如果这个错误又发生,请记录全部的环境并和Informix 技术支持部联
系。

-619 一个blob错误发生在前端应用程序。

这个语句在数据库和用户程序之间传递一个BYTE或TEXT,但有一些事情阻止它。例
如,不能在内存中为一个值分配一个缓冲区。检查相应的ISAM错误的代码以得到更多
的信息。

-620 不能更新下一个范围的大小。

这个内部错误指示数据库服务器不能改变一个存储在根dbspace上的内部数据结构(不
是一个系统目录)。检查相应的ISAM错误的代码以得到更多的信息。可能是根dbspace
损坏。请OnLine管理员运行tbcheck或oncheck工具。

-621 不能更新新的锁定级。

这个内部错误指示数据库服务器不能将一个锁定从共享转换为独占。检查相应的ISAM
错误代码以得到更多的信息。可能是一个硬件问题或一个共享内存的问题。如果这个
错误再次发生,请记录全部的环境并联系Informix 技术支持部。

-622 定位约束索引<索引名>;错误。

这个内部错误显示数据库服务器正试图在UNIQUE或PRIMARY KEY约束下为唯一性测试
一个新的或更新的行,但实现约束的索引找不到。检查相应的ISAM错误代码以得到更
多的信息。可能是系统目录或根dbspace损坏,或一个硬件问题。如果这个错误再次
发生,请记录全部的环境并和Informix 技术支持部联系。

-623 不能发现CONSTRAINT<约束名>;。

在这个语句中指定的约束不能找到。检查所示名称的拼写。如果它是所愿的,通过查
询系统约束表检查存在名称的约束如以下的实例所示。如果想要的约束的所有者名称
显示不是你的,你需要成为一个数据库管理员以参考它(并且,如果这个数据库是ANSI
兼容的,你需要使用所有者名来限制它)。

SELECT constrname,owner FROM informix.sysconstraints

-624 不能终止CONSTRAINT<约束名>;。

这个内部错误显示数据库服务器在取消一个约束或实现该约束的索引时有一个意外的
错误。检查相应的ISAM错误代码以得到更多的信息。可能是系统目录或根dbspace损
坏,或一个硬件问题。如果这个错误再次发生,请记录全部的环境并和Informix 技
术支持部联系。

-625 约束名称<约束名>;已经存在。

所示的约束名称已经存在。检查它的拼写;如果正是所希望的,则必须选定一个其它
的名称,或取消并重新定义存在的约束。参照错误-623的讨论以得到一个列出全部约
束的办法。

-626 不能得到或设置系列值

这个内部错误信息不代表定义在一个表中的一个SERIAL字段有问题。数据库服务器由
于很多原因使用唯一的整型值(例如一个新的或变更的表的id数值)一个内部错误使
得无法生成一个新的、唯一的数;例如,在使用文件实现锁定的主机系统中,一些事
情阻止产生一个锁定文件。检查相应的ISAM错误代码以得到更多的信息。如果这个错
误再次发生,请记录全部的环境并和Informix 技术支持部联系。

-627 不能为两阶段提交准备协调者。

由于协调者不能准备这个INFORMIX-STAR两阶段提交事务,所有参与者最后滚回全部和
此事务关联的工作。不需要管理的干预。参照ISAM错误以得到更多的关于为什么数据
库服务器不能准备提交本地事务的信息。

-628 不能在协调者结束两阶段提交事务。

OnLine数据库服务器的协调者不能结束这个INFORMIX-STAR两阶段提交事务并且事务依
然打开。最后,INFORMIX-STAR自动恢复机制将结束这个事务。不要求管理的干预。参
照ISAM错误以得到更多的关于为什么数据库服务器不能合适地结束事务的信息。

-629 不能结束启发式滚回事务。

OnLine数据库服务器的协调者不能结束这个INFORMIX-STAR两阶段提交事务并且事务依
然打开。最后,INFORMIX-STAR自动恢复机制将结束它。没有要求管理的干预。参照
ISAM错误以得到更多的关于为什么数据库服务器不能合适的结束事务的信息。

-630 不能为提交准备数据库服务器<服务器名>;。

指定的OnLine数据库服务器不能准备与这个INFORMIX-STAR两个阶段提交事务相关的本
地事务。最后,所有的采用者滚回全部和事务相关的工作。不要求管理的干预。参照
ISAM错误以得到更多的关于为什么数据库服务器不能准备提交本地事务的信息。

-631 不能在非blob字段<字段名>;上建立光盘聚类。

只能在TEXT或BYTE类型的字段上建立光盘聚类。所示的字段名是一些其它的类型。确
定字段是你要指定的那一个,并检查表的定义。

-632 不能建立光盘聚类。

试图建立一个光盘聚类失败。参照ISAM错误以得到更多的信息。

-633 不能取消光盘聚类。

试图取消一个光盘聚类失败。参照ISAM错误以得到更多的信息。

-634 对象不存在。

试图取消一个不存在的触发器。检查触发器名称的拼写。同时,可以查询systriggers
系统目录表以回顾数据库中的触发器的名称。

-635 不是对象的拥有者。

试图取消一个不属于你的触发器。可以查询systriggers系统目录表以得知谁拥有这个
触发器。可能需要向这个触发器的拥有者或DBA申请取消这个触发器。

-636 键域的大小太大或有太多的键域。

违反了下列有关聚类键约束之一,这些键在CREATE OPTICAL CLUSTER语句的ON子句
中指定。

* 包含在一个组合聚类键中的字段数超越16。

* 一个CHARACTER字段的长度超越256字节。

-637 不能变更光盘聚类。

试图变更一个光盘聚类的大小失败。参照ISAM错误以得到更多的信息。

-638 不能在非光盘媒体中聚类blob字段。

只能在存储在光盘媒体上的TEXT或BYTE字段上建立一个的光盘聚类。检查以确定没有
指定存储在dbspace 或 blobspace 上的blob字段的名称。

-639 不能在不同的光盘家族上聚类blob字段。

在CREATE OPTICAL CLUSTER语句的FOR子句中指定的全部blob字段必须属于相同的光盘
家族。检查以确定为一个光盘聚类指定的字段不属于不同的家族。

-640 Qplan稳定失败<行号>;。

运行UPDATE STATISTICS可能会修正这个错误。如果这个错误再次发生,请记录全部的
环境并和Informix 技术支持部联系。

-641 不能在非光盘媒体上保留/发布家族。

在RESERVE或RELEASE语句中指定的家族名必须在光盘媒体上存在。检查以确定没有用
这些语句中的任何一个指定一个dbspace或blobspace。

-642 家族名必须是一个字符串。

在RESERVE或RELEASE语句中指定的光盘家族名必须是一个字符串,或一个主机或估计
为一个字符串的过程变量。如果已经指定了一个字符串,确定已将它用引号引起来。

-643 卷必须是一个数。

在RESERVE或RELEASE语句中的卷参数必须是一个INTERGER或SMALLINT。

-644 FAMILY(),VOLUME(),和DESCR()要求在光盘媒介上的BLOB字段。

FAMILY(),VOLUME(),或DESCR()函数的参数必须是一个存储在光盘媒介体上的TEXT
或BYTE字段。检查你并未指定一个不同数据类型的一个字段,或存储在一个dbspace
或blobspace的一个blob字段。

-645 不能保留卷。

试图保留一个带有RESERVE语句的要求光盘卷失败。参照从光盘子系统来的错误(一个
在-7000到-7199范围内的错误) 以得到更多的信息。

-646 不能发布卷。

试图发布一个带有RELEASE语句的要求光盘卷失败。参照从光盘子系统来的错误(一个
在-7000到-7199范围内的错误) 以得到更多的信息。

-647 计算数学库函数<函数名>;错误。

参数的数据类型是正确的,但是传递给函数的值对数学函数是不恰当的。检查确定传
递了一个合法的值给函数。

-648 不能为存储过程跟踪打开DEBUG文件。

试图打开DEBUG跟踪文件时发生一个错误。这个错误可能发生在指定的调试文件名中一
个目录不存在或目录是写保护时。确定那个目录路径是合法的并且informix组是能够
写那个目录的。

-649 调试文件名必须是一个NON-NULL CHAR或VARCHAR。

在SET DEBUG语句中为调试文件指定的参数必须是一个字符数据类型。

-650 最大的varchar大小已经被超越。

这个语句指示一个VARCHAR(m,r)字段带有的最大宽度m大于允许的值(255)。检查字段
定义的标点。如果它是所要的,使用一个宽度范围在1个字符到255个字符的VARCHAR
重新设计表。

-651 保留的字段大小>;最大字段大小(varchar)。

这个语句指定了一个VARCHAR(m, r)带有一个大于最大宽度m的保留宽度r。检查字段定
义的标点。如果它是所要的,修改那个语句使得m >;= r。

-652 局部变量不允许缺省值。

试图用一个缺省值定义一个局部变量。只有全局变量和参数能有缺省值。

下面是一个错误的例子:

DEFINE var INT DEFAULT 10; -- 错误

更正如下:

DEFINE var INT; LET var = 10;

-653 声明为LIKE的变量不能是全局的。

一个全局变量定义为LIKE。LIKE变量必须是局部变量。

下面是一个错误的例子:

DEFINE GLOBAL var LIKE tab.col; -- 错误

更正:不要对全局变量使用LIKE关键字。换句话说,显式地指定数据类型。

-654 错误使用PROCEDURE声明类型。

过程声明用在参数或RETURNING子句中。存储过程不能接受或返回过程。

下面是一个错误的例子:

CREATE PROCEDURE testproc (proc1 procedure) -- 错误 RETURNING
procedure; -- 错误
...
END PROCEDURE

更正:不要试图在一个参数或RETURNING子句中使用过程说明。

-655 RETURN值计数与过程说明不匹配。

一个过程在RETURNING子句中声明的返回值的个数与在一个RETURN子句中的值的个数
不匹配。

下面是一个错误的例子:

CREATE PROCEDURE testproc () RETURNING INT, INT;
...
RETURN 1,2,3; -- 错误
...
RETURN 1; -- error END PROCEDURE

更正:在这个实例中,严格地返回两个参数。

-656 过程没有说明为有返回值。

当过程说明时,它没有包含一个RETURNING子句指定这个过程将有任何返回值,但随后
一个RETURN语句在过程体中被发现。

下面是一个错误的例子:

CREATE PROCEDURE testproc() DEFINE a INT; LET a = 10; RETURN a + 1; --
错误 END PROCEDURE

更正:在DEFINE前增加一个RETURNING子句或移去RETURN语句。

-657 不能在过程内建立过程。

不能在一个CREATE PROCEDURE语句中有CREATE PROCEDURE语句。

-658 说明成GLOBAL的变量要求一个缺省值。

一个全局变量没有给缺省值。全局变量要求一个缺省值。

错误的例子:

DEFINE GLOBAL glob INT; -- 错误。

更正:

DEFINE GLOBAL glob INT DEFAULT 10;

-659 SELECT语句要求INTO TEMP表。

一个SELECT语句没有指定在哪里放返回值。一个过程中的SELECT语句要求一个INTO
TEMP子句或一个引用适当过程变量的INTO子句。

错误的例子:

CREATE PROCEDURE testproc()
...
SELECT col1, col2 FROM tab; -- 错误END PROCEDURE

更正:

CREATE PROCEDURE testproc()
...
SELECT col1, col2 INTO var1, var2 FROM tab; SELECT col1, col2
FROM tab INTO TEMP another_table; END PROCEDURE

-660 循环变量<变量名>;不能被修改。

试图修改一个FOR 语句中的循环变量。循环变量不能在循环内部被修改。

错误的例子:

FOR i IN (1,2,3,4) LET i = i + 1; -- 错误END FOR

更正:在LET语句中使用另一个变量。

-661 变量数和返回值数不匹配。

一个LET语句左边的变量的个数和右边的值数不匹配。

错误的例子:

LET a,b = 10,20,39; LET i,j = proc1()+proc2(); LET a,b = (SELECT c1
FROM tab)

更正:匹配LET语句两边表达式的个数。

-662 指定的循环变量<变量名>;超过一个。

在一个FOREACH语句中使用一个循环变量超过一次。

错误的例子:

FOREACH SELECT col1, col2 INTO var, var FROM tab -- 错误
...
END FOREACH

更正:

FOREACH SELECT col1, col2 INTO var1, var2 FROM tab
...
END FOREACH

-663 对过程<过程名>;使用了多于一次的过程调用句法。

调用一个过程时,一些参数命名了而其它的没命名。

错误的例子:

LET var = proc (arg1 = 10, 20, arg3 = 30); -- 错误

更正:

LET var = proc (arg1 = 10, arg2 = 20, arg3 = 30); --正确LET var =
proc (10,20,30);--正确

-664 系统函数<函数名>;的参数个数错误。

对一个函数指定了一个非法的参数个数。检查对函数传递了正确的参数个数。

-665 语意上的内部错误-<代码号>;。

如果这个内部错误再次发生,请记录全部的环境并和Informix 技术支持部联系。

-666 变量<变量名>;必须被说明为INTEGER或SMALLINT。

在一个FOR语句中,包含范围的循环变量必须被说明为INT或SMALLINT。

错误的例子:

DEFINE var CHAR(10);  FOR var IN (e1, e2 TO e3, e4) -- 错误
...
END FOR;

更正:因为FOR语句包含一个范围操作符(TO子句),"var"必须被说明为INT或
SMALLINT。

-667 变量<变量名>;没有被说明。

指定的变量没有说明。检查未定义变量的拼写以确定其不导致错误。

-668 系统命令不能被执行。

一个系统调用在操作系统中失败。下面的语句显示一个可能导致一个错误的例子。
SYSTEM `hello';

-669 变量<变量名>;重复说明。

一个变量在同一个作用域中被说明两次。参照Informix Guide to SQL: -Tutorial,
第12章,过程变量的作用域的一个解释。

-670 变量<变量名>;说明为SERIAL类型。

SERIAL类型不是一个合法的过程类型。使用整数类型去匹配SQL SERIAL类型。

-671 过程调用<过程名>;有重复的参数名。

一个过程调用命名同一个参数不止一次。

错误的例子:

LET var = proc (arg1 = 10, arg2 = 20, arg1 = 30);-- 错误

-672 无效的数据结构<执行树>;。

如果这个内部错误再次发生,请记录全部的环境并和Informix
技术支持部联系。

-673 过程<过程名>;已经在数据库中存在。

试图建立一个已经在数据库中存在的过程。如果你想建立过程的一个新版本,在试图
建立过程的新版本前使用DROP PORCEDURE语句取消这个过程。

-674 过程<过程名>;没找到。

一个被调用的过程在数据库中不存在。如果你准备了一个EXECUTE PROCEDURE语句,然
后过程被你的应用或一个其它的应用在你执行准备的语句前终止,会收到这个错误。

-675 不合法的SQL语句在存储过程中。

在一个过程中运行一个禁止的语句。这个错误发生在一个过程被一个SQL数据管理语句
调用时。

错误的例子:

CREATE PROCEDURE testproc (arg INT, id INT) RETURNING INT; UPDATE tab
SET col = arg WHERE key = id; -- 错误 RETURN id; END
PROCEDURE;

SELECT col FROM tab WHERE testproc(tab.col, tab.key) = 10;

更正:不要使用一个限制的语句(诸如前面的UPDATE语句)。

-676 无效的检查约束字段。

一个在字段级指定的检查约束只能参考那个字段。要指定一个跨越多于一个字段的检
查约束,在表级指定检查约束。不能为字段建立一个穿越表的约束。

-677 检查约束不能包含子查询或过程。

一个检查约束不能有子查询或过程调用。

-678 在检查约束中无效的字段<字段名>;下标。

在一个检查约束中一个带下标的字段的下标超出字段的边界。检查字段的最大长度不
要超越带下标的字段指定的边界。如果知道字段的表名,可以使用以下的子查询查询
系统目录表以找出字段的最大长度。

SELECT collength FROM syscolumns WHERE colname =
`column-name'
AND tabid =
(SELECT tabid FROM systables WHERE tabname =
  `table-name')

-679 不能对约束<约束名>;读违背约束的数据。

参照ISAM错误以得到更多的信息。如果这个内部错误再次发生,请记录全部的环境并
和Informix 技术支持部联系。

-680 不能对约束<约束名>;写违背约束的数据。

参照ISAM错误以得到更多的信息。如果这个内部错误再次发生,请记录全部的环境并
和Informix 技术支持部联系。

-681 在INSERT列表中字段不止一次被指定。

这个错误当用户在INSERT字段列表中指定一个字段名超过一次时发生。

-682 在表<表名>;中读取约束索引错误。

系统不能验证约束。参照ISAM错误以得到更多的信息。如果这个内部错误再次发生,
请记录全部的环境并和Informix技术支持部联系。

-683 指定的STEP表达式将不通过RANGE。

在FOR语句中的STEP表达式的计算值将导致一个无穷的循环。

错误的例子:

FOR i = 10 TO 20 STEP -1; -- 错误 ...
END FOR

更正:更正范围或步长表达式以使增加的值在范围之内。

-684 过程<过程名>;返回太多的值。

从一个过程返回的值的个数多于调用者期待的值的个数。

错误的例子:

CREATE PROCEDURE testproc (arg INT)
RETURNING INT, INT;
RETURN 1,2;
END PROCEDURE
SELECT col FROM tab WHERE col = testproc(1); -- 错误

-685 过程<过程名>;返回太少的值。

从一个过程返回的值的个数少于调用者期待的值的个数。

错误的例子:

CREATE PROCEDURE testproc (arg INT)
RETURNING INT, INT;
RETURN 1,2;
END PROCEDURE
UPDATE tab SET (c1, c2, c3) = (testproc(1)); -- 错误

-686 过程<过程名>;返回超过一行的值。

一个过程在调用者期待只返回一行值的时候,返回了超过一行的值。(例如,它执行
RETURN... WITH RESUME)

错误的例子:

CREATE PROCEDURE testproc (limit INT)
RETURNING INT;
DEFINE i INT;
FOR i IN (1 TO limit)
  RETURN i WITH RESUME;
END FOR
END PROCEDURE;
CREATE PROCEDURE gettest()
DEFINE var INT;
LET var = testproc (10); -- 错误END PROCEDURE

-687 在跟踪存储过程前设置调试文件。

一个TRACE语句(除了TRACE OFF)在一个SET DEBUG FILE语句前执行。不知道TRACE
语句的输出到何处。

错误的例子:

TRACE procedure; -- 错误
更正:
SET DEBUG FILE TO `trace.out';
TRACE procedure;

-688 变量<变量名>;必须被说明为CHAR或VARCHAR。

说明了CHAR或VARCHAR数据类型以外的变量。更正说明并重试。

-689 全局变量<变量名>;说明不合理。

两个或更多的执行着的过程定义了不同数据类型的同一个全局变量。

错误的例子:

CREATE PROCEDURE test1()
DEFINE GLOBAL glob INT DEFAULT 10;
...
END PROCEDURE
CREATE PROCEDURE test2()
DEFINE GLOBAL glob CHAR (9) DEFAULT USER;
...
END PROCEDURE

更正:一致地说明全局变量。(使用合适的命名约定将是有用的。)同一数据类型但
不同长度的两个变量被认为是不一致的。

-690 不能从参考表<表名>;中读取码。

指示约束不能生效。参照ISAM错误以得到更多的信息。如果使用级连的删除,数据库
日志必须打开。

-691 在参照约束<约束名>;的参照表中遗漏键。

一个参照约束被违反。这种情况常常发生在试图将值插入到一个是某个参照约束的一
部分的字段中,或修改这样的字段的值时发生。试图键入的值在参照的(父键)字段
中不存在。如果使用级连的删除,数据库日志必须打开。

-692 约束<约束名>;的键值仍然被参照。

违反了一个参照约束。这种情况常常在试图删除正被另一行(子键)参照着的一个字
段中的一行(父键)时发生。如果使用级连的删除,数据库日志必须打开。

-693 系统命令期待一个非null值。

一个null值被传递给SYSTEM语句。

错误的例子:

DEFINE c CHAR(100);
LET c = NULL;
...
SYSTEM c; -- 错误

-694 太多的参数传递给过程<过程名>;。

传递给过程的参数比过程说明接受的参数多。

-695 参数不是过程<过程名>;的一个参数。

一个命名的参数被传递给一个过程,但那个命名的参数不存在。

错误的例子:

CREATE PROCEDURE testproc (arg1 INT, arg2 INT)
RETURNING INT;
...
RETURN 1; END PROCEDURE SELECT col FROM tab WHERE testproc
(arg1 = 10, arg5 = 20); --错误

-696 变量<变量名>;有未定义的值。

一个变量被使用但从未赋一个值。

错误的例子:

DEFINE i, j INT;
LET i = j + 1; -- 错误

更正:在使用各个变量和参数之前赋予它们一个合法的值。

-697 STEP表达式求值得ZERO。

一个FOR语句的STEP表达式计算得零。

错误的例子:

LET e = -1;
FOR i = 10 TO 20 STEP e+1; -- 错误
...
END FOR

更正:改变STEP表达式使得它计算出一个非零的值。

-698 不一致的事务。服务器的数和名称滚回<服务器>;。

如果有INFORMIX-STAR两阶段提交或分布式事务以混合结果实现时,则返回该信息。这
就是说,一些参与该事务的OnLine数据库服务器滚回了整个事务中它们那个部分,但
另外一些数据库服务器则提交了整个事务中它们那部分。滚回工作的数据库服务器的
数目总是精确的但服务器名称的列表(被DBSERVERNAME值指定的)可能是不完整的。
如果大量的服务器滚回工作,列表可能被截断到保存空间。参考协调者OnLine
信息日志以得到服务器名称的完整列表。如果这个信息返回,你必须决定是否你的网
络数据库系统处在一个不一致的状态。这个过程的详细描述在INFORMIX--OnLine
Administrator's Guide中(或,对版本6.0或更高,在INFORMIX--OnLine Dynamic
Server Administrator's Guide 中)。

-699 事务启发式地滚回。

如果一个INFORMIX-STAR 两阶段提交事务被所有参与的OnLine数据库服务器启发式地
滚回,将返回这个信息。因为全部数据库服务器滚回了这个事务,网络上的数据库系
统依然是一致的。

-700 在一个全局事务中语句是无效的。

当用户试图在一个全局事务中执行一个BEGIN WORK,COMMIT WORK, 或ROLLBACK WORK
语句时产生该错误。

-701 在XA环境中语句是无效的。

在一个X/Open分布的事务处理环境中执行下面任意语句就会产生该错误:

* CLOSE DATABASE

* CREATE DATABASE

* DROP DATABASE

* SET LOG

在这种环境下,可以在一个 xa_open 的调用之后执行一个单一的DATABASE语句来指定
当前的数据库。但是,在该数据库被选择之后,不能执行其它的DATABASE语句。该错
误产生于试图再次执行DATABASE语句时。

-702 不能认排他模式打开数据库。

在一个X/Open 分布的事务处理环境中,不能认排他模式打开一个数据库。

-703 在表<表名>;中主键有一个带null键值的域。

不能在一个是主键一部分的字段中插入一个null值。

-704 主键已在表中存在。

一个表只能有一个主键。

-705 不能取消/修改过程<过程名>;。它当前正在使用中。

试图取消一个正在执行的过程,或在当前正在执行的过程上执行一个UPDATE
STATISTICS。该错误发生在一个过程试图取消它本身或一个嵌套的过程试图取消调用
它的过程时。

错误的例子:

CREATE PROCEDURE testproc()
...
DROP PROCEDURE testproc; -- 错误END PROCEDURE

更正:可以使用一个 ON EXCEPTION 语句捕获该错误,且不执行DROP PROCEDURE
或 UPDATE STATISTICS语句

-706 在过程<过程名>;中执行的权限被取消。

一个用户如果未拥有过程或不是DBA,则必须有执行权限去运行一个过程。

-707 在光盘聚类中的Blob字段必须是不同的。

同一字段在CREATE OPTICAL CLUSTER 语句中FOR子句的字段列表中被指定了
一次以上。改变语句使得字段不能出现一次以上。

-708 光盘聚类<聚类名>;已经存在。

试图用一个已存在的聚类名称产生一个新的光盘聚类。必须取消已存在的聚类,或用
一个不同的聚类名称重执行该语句。

-709 Blob字段<字段名>;已经聚类。

已经用命名了的blob字段产生了一个光盘聚类。因为一个单一的blob字段只能是一个
光盘聚类的一部分,因此试图在该字段上产生一个新的聚类失败。

-710 表<表名>;已经取消、更改或改名。

这个错误可能在明确准备好的语句中发生。这些语句具有形式:

PREPARE 语句 标识号 FROM 带引号的字符串

当一个语句在一个数据库服务器中准备好以后且用户执行它之前,表被改名或更改,
可能是改变表的结构。结果将出现问题。

这个错误也可能在存储过程中发生。在数据库服务器第一次执行一个新的存储过程之
前,它优化在存储过程中的代码(语句)。优化使代码依赖于过程参照的表的结构。
如果在过程优化后,但还没有执行前,表结构改变了,将产生这个错误。

每个存储过程在它第一次运行(而不是它被创建)时被优化。这种行为说明一个存储
过程在它第一次运行时可能成功,但以后在同一个实际的环境中会失败。存储过程的
失败也可能是间歇的,因为在一次执行中的失败将强制一个内部警告在下一次执行以
前重新优化过程。

数据库服务器有一个存储过程显式参照的表的列表。无论何时这些显式参照表中的一
部分被修改了,数据库服务器在过程下一次执行时重新优化该过程。

但是,如果存储过程依赖于一个只是间接参照的表,数据库服务器无法在表被改动后
发现重新优化过程的需要。例如,如果一个存储过程调用了一个触发器,一个表就能
被间接参照。如果被那个触发器参照(但没有被存储过程参照)的表改变了,数据库
服务器不知道它应该在那个存储过程运行以前将其重新优化。当该存储过程在表被修
改后运行,这个错误可能发生。

使用下面两种方法之一从这个错误中恢复:

* 发出UPDATE STATISTICS 语句以强制重新优化过程。

* 重新运行该过程。

为了防止这个错误,可以强制存储过程的重新优化。要强制重新优化,执行下面的语
句:

UPDATE STATISTICS FOR PROCEDURE <过程名>;

可以将这条语句用下列的任一方法加在程序中:

* 将UPDATE STATISTICS 语句放在每个改变了对象模式的语句后面。

* 将UPDATE STATISTICS 语句放在每个存储过程执行之前。

更有效地,可以将UPDATE STATISTICS 语句和程序(改变对象模式或执行过程)中不
经常发生的动作放在一起。大多数情况下,程序中不经常发生的动作是对象模式的改
变。

当按照这种办法从这个错误中恢复时,必须为每个间接参照了改变的表的过程执行
UPDATE STATISTICS 语句,除非该过程也显式地参照了这个表。

也可以通过简单地重新运行存储过程来从这种错误中恢复。存储过程第一次失败时,
数据库服务器标志该过程为需要重新优化。下次运行这个过程,数据库服务器在运行
它之前优化它。但是两次运行存储可能既不实用也不安全。一个安全的选择是使用
UPDATE STATISTICS 语句来强制过程的重新优化。

-711 不能插入编码的BLOB描述符。

使用DESCR() 函数插入一个编码的blob描述符失败。参看ISAM 错误以得到更多的信
息。

-712 不能在非光盘的BLOB字段上插入编码的BLOB描述符。

试图使用DESCR()函数在一个存储在dbspace 或 blobspace中的 TEXT或BYTE字段中插
入一个编码的blob描述符。只能使用该函数将描述符插入存储在光盘媒体上的blob
字段。

-713 不能为BLOB描述符解码。

一个blob描述符在插入数据行之前解码失败。参看从光盘子系统中来的的错误(在
7000到7199范围中的错误)以得到更多的信息。

-714 不能为BLOB描述符编码。

一个为了在光盘媒体中存储的blob描述符的编码失败。参看从光盘子系统中来的错误
(在7000到7199范围中的错误)以得到更多的信息。

-715 事务状态错。

检索事务状态错误。参看ISAM 错误以取得更多的信息。

-716 可能不一致的事务。<服务器名称列表>;是未知的服务器。

在管理员杀死一个协调者之后该信息出现-OnLine数据库服务器进程、线索或会话使
用tbmode -z 或onmode -z一个协调者作出决定提交或滚回一个两阶段提交事务之后的
任何时间。必须检查未知的服务器每次决定是否本地事务被提交或滚回时留下的
OnLine信息日志或OnLine逻辑日志。如果一些参与的OnLine数据库服务器滚回事务且
其它的提交它,必须判定联网的数据库系统是否处于不一致状态。这个过程在
INFORMIX--OnLine Administrator's Guide (或,对于版本6.0, 在INFORMIX-OnLine
Dynamic Server Administrator's Guide中)中作了详细的描述。

-717 无效的参数传递给系统函数<函数名>;。

一个无效的数据类型被传递给算术函数之一。(HEX(), TRUNC(), ROUND())。

-718 当一个全局的事务被挂起时语句是无效的。

如果一个作为资源管理器运行的OnLine数据库服务器在一个X/Open分布的事务处理
环境中已经挂起了一个事务,它的下一个语句必须是xa_start。全部其它语句皆
不允许。

-719 循环变量<变量名>;不能说明为GLOBAL。

一个全局变量不能用作循环变量。重新定义使它对于循环是局部的,或用另一个(局
部的)变量作为循环变量。

-720 在FOREACH SELECT 中的字段数与变量的个数不匹配。

在SELECT返回的字段数和在INTO列表中指定的变量数之间存在不匹配。更正INTO列表
中的变量数。

-721 存储过程<过程名>;不再有效。

试图从一个EXECUTE 语句执行一个过程,但它在PREPARE语句运行后已经重新定义了。
必须在EXECUTE PROCEDURE语句上再使用PREPARE语句。

例如,下面的代码序列将产生该错误:

$prepare pr_stat from `execute procedure testproc()';
...
  /* drop procedure testproc
  create procedure testproc() ......
  [same application or different]
  */
...
$execute pr_stat; /* 触发器错误 -721 */

-722 堆栈空间溢出。

服务器运行的堆栈空间溢出。请求Informix数据库管理员增加在$ONCONFIG (或
$TBCONFIG) 文件中指定的STACKSIZE参数以分配更多的内存。为使此改变生效,
OnLine必须重新开始。

-723 不能禁止在一个符合ANSI标准的数据库中进行日志。

试图使用START DATABASE <数据库>; WITH NO LOG句法去取消在一个符合ANSI标准的SE
数据库上的数据库日志。不能在这种数据库上运行该语句来关掉日志。

-724 系统初始化文件$INFORMIXDIR/cnv50t60.sql 丢失。

确定$INFORMIXDIR/cnv50t60.sql 在正确位置且可读。如果确是,系统仍然失败,重
装系统。

-725 当读取系统初始化文件$INFORMIXDIR/cnv50t60.sql 时出错。

确定手迹文件$INFORMIXDIR/cnv50t60.sql 是可读的。如果是这样但仍失败,重装系
统。

-726 dbinfo()的第一个参数必须是一个引号引起的串常数。

确定dbinfo()的第一个参数是对应于下面值之一的引号串:`dbspace',
`sqlca.sqlerrd1', 或`sqlca.sqlerrd2'。

-727 无效或NULL tblspace 数送给dbinfo(dbspace)。

用`dbspace' 串常数作为第一个参数调用dbinfo() 函数。必须提供一个有效的表空间
的数或一个能计算出与第二个参数一样的数的表达式。检查是否提供了一个数作为第
二个参数,并且对应于一个有效的表空间的数。

-728 dbinfo <参数名>;的第一个参数未知。

dbinfo()函数的有效的参数是引用串`dbspace' 后跟一个有效表空间的数或下面两个
值之一:`sqlca.sqlerrd1' 或 `sqlca.sqlerrd2'。确定提供了这些值之一,并且用
引号引起了串。

-729 触发器没有触发操作。

CREATE TRIGGER 语句不包括一个触发操作。在触发器定义中增加一个触发操作列表,
然后重新提交CREATE TRIGGER 语句。

-730 如果触发器没有FOR EACH ROW,不能指定REFERENCING。

在一个不包括FOR EACH ROW触发操作节的CREATE TRIGGER语句中包括了一个
REFERENCING 子句。删掉REFERENCING 子句或,如果恰当的话,增加遗漏的关键字
FOR EACH ROW,后跟一个此时要发生的触发操作。

-731 在触发器主体中参考的字段的使用是无效的。

为了插入和删除触发器,这意味着在EXECUTE PROCEDURE 语句(只在一个修改触发器
中允许)的INTO子句中使用了冲突的字段。从INTO子句中删除字段名称。

-732 在触发器内部旧的或新的值相关名称的非法使用。

不能在FOR EACH ROW 节外,或在 EXECUTE PROCEDURE语句的 INTO 子句之中
使用旧的或新的相关名称。使用旧的或新的相关名称来验证SELECT COUNT DISTINCT
字段也是无效的。例如下面的语句返回该错误:

SELECT COUNT (DISTINCT oldname.colname)

不能对一个插入触发器指定一个旧的相关名称,不能对一个删除触发器指定一个新的
相关名称。

-733 不能在 CREATE TRIGGER 语句中参考过程变量。

在一个存储过程内部有一个 CREATE TRIGGER 语句,在 CREATE TRIGGER 语句中参考
了在存储过程中定义的变量。这是非法的。删掉从 CREATE TRIGGER语句中对存储过程
变量的参考,再试一次。

-734 对象名称匹配旧的或新的值相关名称。

该错误在下面三种情况下返回:

* 触发表名称,或同义字,(如果使用了),匹配REFERENCING 子句中的旧的或
新的相关名称。

* 在动作子句中参考的表名称,或同义字,(如果使用了),匹配REFERENCING
子句中的旧的或新的相关名称。

* 旧的相关名称匹配新的相关名称。

改变相关名称或表名称,然后再执行CREATE TRIGGER语句。

-735 不能参考参与在级联删除中的表。

如果一个子表在一个相关的子查询中被参考,该子查询是DELETE语句的一部分,这个
子表不能是一个删除将要级联的表之一。不允许的原因是结果依赖于行被处理的次
序。重写查询使子表不在相关的子查询中被参考。

-736 分辨率在LOW模式下无意义。

既然数据分布只建立在MEDIUM或HIGH模式下,因此指定的分辨率是无意义的。取消
RESOLUTION子句或将模式从LOW改变为MEDIUM或HIGH。

-737 信任对HIGH模式无意义。

从该语句删掉信任值。即,如果冲突的语句是:

UPDATE STATISTICS HIGH RESOLUTION 0.1 0.99;

将其改变为:

UPDATE STATISTICS HIGH RESOLUTION 0.1;

如果想要一个基于抽样而不是使用字段中的全部数据的分布,应该用MEDIUM替换
HIGH。

-738 DROP DISTRIBUTIONS 只在LOW模式下有效。

缺省地,LOW模式不能取消分布,所以需要DROP DISTRIBUTIONS 子句。如果要取消
HIGH或MEDIUM分布,使用DROP DISTRIBUTIONS 子句。

-739 信任必须在范围[0.80, 0.99](包括)之内。

如果一个想要的信任值大于0.99,使用HIGH模式。小于0.80的值是不允许的因为可能
会得到一个很差的分布。如果降低信任以使执行一个更新统计命令的时间降低,应该
考虑使用较大的分辨率值。

-740 分辨率必须大于0.005,或小于等于10.0。

该参数值决定数据分布的分辨的精确程度。一个10.0的分辨率意即为任何单一选定过
滤器的应用的估计的精确度限制于(+或-)百分之五。大于10.0的值无意义因为它不
能提供关于数据分布的足够的细节。

-741 同一事件的触发器已经存在。

为一个事件产生一个触发器,但是已经存在一个该事件的触发器。在一个表中只能有
一个插入或删除触发器。如果在一个更新中定义了多重触发器,在UPDATE语句中的字
段列表必须是互相排斥的-即,不能在超过一个的UPDATE子句中将一个字段命名为触发
字段。

-742 触发器和指示的约束不能共存。

删掉不能与指示的约束共存的触发器。

-743 对象<对象名>;已经在数据库中存在。

试图在数据库中定义一个已存在的对象。

-744 在触发器中不合法的SQL语句。

当触发的SQL语句是BEGIN WORK, COMMIT WORK, ROLLBACK WORK, 或 SET
CONSTRAINTS 时该错误返回。这些语句在作为触发操作时是不允许的。删掉冲突的语
句。

-745 触发器执行失败。

该信息为在触发操作的存储过程中指定错误条件这一普遍用途而定义。

-746 <信息串>;。

为这条信息提供信息字符串。当在一个触发操作的存储过程指定错误条件时可以提供
这条信息。对该错误的改正操作依赖于产生它的条件。条件和信息文本均由用户定
义。

-747 表或字段匹配在触发器语句中参考的对象。

该错误在下述情形返回:当一个触发的SQL语句作用在触发表上时,或当两种语句被更
新且字段在触发的操作中被更新与字段被触发语句更新是一样时。

-748 级联的触发器数超过了最大极限。

超过了级联触发器的最大数61。可以关掉触发器而不实现它。可以查询systriggers
系统目录表,找出在数据库中存在着什么样的触发器。考虑在存储过程中放置初始化
触发器动作子句并使用SPL TRACE 语句跟踪触发动作。

-749 远程游标操作在5.01之前的服务器上不允许。

触发器语句或游标操作由5.01之前的数据库服务器发送。这是不允许的。

-750 发现对<表名>;的无效的分配格式。

这个内部错误一般不会发生,除非数据库在某种程度上损坏了。用UPDATE
STATISTICS重建分布。如果错误仍然发生,请记录全部环境并与Informix技术支持部
联系。

-751 在5.01之前的服务器上不允许执行远程过程。

触发器的动作子句包含一个未在数据操作语句中调用的存储过程,该过程将被一个外
部的5.01之前的数据库服务器执行。这是不允许的。一个在数据操作语句中调用的存
储过程受执行某种SQL语句的限制,包括与处理有关的语句。与处理有关的语句在一个
触发器动作的存储过程中是不允许的。一个早于5.01的数据库服务器不配备来检查这
些,所以过程是不允许的。如果可能,在一个5.01数据库服务器上执行该过程。

-752 全部Smart Disk 设备忙。

等待一段时间,重试Smart Disk 操作。

-753 拒绝存取-已超越了单用户极限。

许可加强只为单用户配置;多重用户不能同时使用本产品。如果在一个远程机器上使
用本产品,该产品只对非网络环境实施许可。如果从本地机器上使用本产品,等待当
前用户退出后再试一次。

-754 不能存取许可证文件。

系统找不到用户的许可证文件。用户许可证文件可能尚未安装或未正确安装。也可能
因为没有存取用户许可证文件的正确的文件许可或目录许可。参考安装文件。

-755 不能存取许可证文件以发布许可。

可能不具备进行某种特定操作的许可。与系统管理员一起检查。

-756 评测版本已经期满。

本产品的评测版本只能工作一段指定的时间周期。它允许你评测本产品但不能长期使
用。当评测版本期满后,电话联系Informix定购本产品的标准版本。

-757 为轻附加进行的文件打开不能伪关闭。

这是一个内部错误。如果错误再次发生,请记录全部环境并与Informix 技术支持部联
系。

-758 不能隐含地重连接一个新服务器<服务器名>;。

如果使用CONNECT TO 语句连接一个服务器,不能通过DATABASE,START DATABASE等等
DATABASE语句之一隐含地重连接另一个服务器。必须用SET CONNECTION语句转向它。

-759 在一个显式的数据库连接中不能使用数据库命令。

如果连接到一个数据库且服务器使用CONNECT TO <数据库>;@<服务器>;句法,直到关闭
当前连接之前不能使用另一个数据库。

-760 远程过程必须在返回之前提交或恢复。

当过程将控制返回应用之前远程过程必须执行COMMIT WORK 及 ROLLBACK WORK语句。

-761 INFORMIXSERVER 与 DBSERVERNAME 或DBSERVERALIASES 都不匹配。

INFORMIXSERVER 环境变量与 DBSERVERNAME或设置在试图连接的服务器的ONCONFIG
配置文件中的任何DBSERVERALIASES不匹配。检查环境变量和ONCONFIG 配置文件,确
保INFORMIXSERVER与ONCONFIG文件中的一个设置匹配。

-762 进行语句分析时栈溢出。

这条错误说明SQL分析器已达到了一个内部的内存极限。当查询包含过多的嵌套表达式
时出现该错。例如,该查询的WHERE子句中包含很多AND或OR。解决的办法是重写查询
取消一些嵌套的表达式。

-763 检查环境初始化错误。

这是一个全目标信息,意在指出当用户试图与一个加密的数据库服务器连接时出现了
问题。与安全管理员或DBA联系如何进行操作。

-764 在该方式中只有DBA可以在数据库上运行修改统计。

试图在该方式中,在整个数据库上带DROP DISTRIBUTIONS 子句运行UPDATE
STATISTICS
语句,并且不是LOW模式。只有用户informix或数据库管理员可以做该操作。

-765 不能EXECUTE一个已DECLARE的语句。

不能执行一个已经说明的准备好的语句。但是,可以使用 EXECUTE INTO (或EXECUTE
PROCEDURE INTO) 而不是执行DECLARE, OPEN,和 FETCH 语句为一个准备好的单个的
SELECT语句指定一个输出变量。

-766 串必须以null结尾。

在INFORMIX-ESQL/C中,如果在一个INSERT语句或一个SQL语句的WHERE子句中使用宿主
变量,且数据库是ANSI兼容的,串必须以null结尾。

-767 不能用带检查选项的视窗UPDATE/INSERT一个远程表。

当使用带检查选项的视窗时,不能对驻留在网络之上的表执行UPDATE或INSERT操作。
从视窗中取消全部检查选项或本地执行UPDATE/INSERT。

-768 在例程<例程名>;中内部错误。

如果又发生该内部错误,请记录全部环境并与Informix技术支持部联系。

-769 内部错:循环因子执行/状态错误参数。

请记录全部环境并与Informix 技术支持部联系。

-770 指定了一个错误的分段id。

这是一个内部错误。如果没有找到直接的原因,请记录全部环境并与Informix 技术支
持部联系。

-771 指定了一个错误的表锁定id。

如果没有找到导致此内部错误的直接原因,请记录全部环境并与Informix 技术支持部
联系。

-772 记录/键对任何表/索引分段都不合格。

该错发生在插入或更新一个记录时。最可能的原因是一个未指定REMAINDER的非法的分
段存储说明。最容易的改错方法是增加一个REMAINDER分段到SQL语句中。但是最好的
方法可能是重新检查原始的分段存储说明,找出错误的原因,在ALTER FRAGMENT语句
中定位它。

-773 表达式要求一个新的分段。

当增加一个分段到一个基于分段存储策略的表达式中时,必须为新的分段指定一个表
达式。重写SQL语句使之包括一个分段表达式。

-774 不能用一个round-robin 分段存储指定分段表达式。

如果表分段存储是基于round-robin 策略的,在ALTER FRAGMENT 操作中不能指定一个
分段表达式。

-775 该dbspace不能被表/索引使用。

在ALTER FRAGMENT操作中指定的dbspace不正确,因为在dbspace中没有分段。指定一
个有分段的dbspace。

-776 变更分段错:不能将行移到新的分段存储方案中。

在ALTER FRAGMENT 操作中,行不能移到另一个分段存储策略中。查看伴随的ISAM 错
误以得到更多的为何ALTER FRAGMENT操作失败的信息。

-777 内部错:函数在分段表上无效。

如果没有找到导致此内部错误的直接原因,请记录全部环境并与Informix 技术支持部
联系。

-778 不能在索引上变更分段存储的方案。

在ALTER FRAGMENT操作中,索引的分段存储策略不能变更。查看伴随的ISAM 错误以
得到更多的为何ALTER FRAGMENT操作失败的信息。

-779 在变更分段说明中重复使用了表名。

你不能多次联结同一个表。请确保在你变更分段说明时,每个表只能联结一次。

-780 表/索引未被分段。

由于表或者索引未被分段,你不能执行ALTER FRAGMENT 操作。对表或索引进行分段,
或者不要执行分段存储操作。

-781 不能在一个临时表上变更分段存储。

你试图变更一个基于临时表的分段。一般来说,不允许对TEMP表进行动态修改。如果
你需要不同的分段存储模式,你必须重新生成临时表。

-782 被连上的表是分段的。

当你连上表时,被使用的表不能是被分段的。

-783 由于模式不兼容,不能连上。

互不兼容的表模式不允许你执行attach操作。当你执行attach时,表的模式必须相
同。可以先用ALTER TABLE语句使模式兼容,然后再执行ALTER FRAGMENT . . .
ATTACH 操作。

-784 由于参照约束的存在,不能分离。

已存在的参照约束不允许你执行分离。在对dbspace或表执行datach操作之前,你必须
先取消参照约束。

-785 由于表或者索引的分段存储,不能取消字段。


在取消字段之前,你必须变更分段存储表达式,除去对字段的引用。

-786 所连的非分段表不在连接列表中。

残留表必须在连接列表的第一个入口处。

-787 "象表一样"地被分段的索引不能被变更。

如果你未在CREATE INDEX语句中指定一个存储说明,那么索引将与基本表同样地被分
段,同时要满足分段索引的各种限制条件。例如,如果基本的分段存储策略为
round-robin,而索引为唯一的,那么将返回一个错误码。你不能变更这种索引分段存
储类型。如果你希望变更索引分段存储,你可以使用ALTER INDEX 的INIT选项分离索
引。这就使得索引与表是相互独立的,从而允许你分别独立地变更它们。

-788 不认识的操作符/类型。

如果找不到导致此内部错误的直接原因,请记录所有的错误现场,并与Informix技术
支持部联系。

-789 内部错误,表达式定义得不正确。

如果找不到导致此内部错误的直接原因,请记录所有的错误现场,并与Informix技术
支持部联系。

-790 Rowids在表中已经存在。

不能多次生成rowids。你试图在一个已经定义了rowids的表中加入rowids。不要运行
导致这个错误的命令。

-791 无法打开 Informix 口令文件。

请检查INFORMIXDIR环境变量,确保它的值设置正确。同时检查Informix的口令文件
INFORMIXDIR\ETC\PASSWD。如果Informix口令文件被毁坏或者删除,请重新安装
INFORMIX-SE数据库服务器。

-795 在寻找中断的时候发生错误。可能未装入INFORMIX-NET for Windows TSR。

如果你希望通过网络同一个 INFORMIX-OnLine for NetWare 数据库服务器通讯,你必
须在DOS环境下运行INETIPX.EXE TSR(内存驻留程序)。请确保你有足够的内存来装
入该TSR。

-801 SQL编辑缓冲区已满。

文本编辑器无法扩展用来保存你的SQL语句的缓冲区,因为没有更多的可用数据空间内
存。如果你在缓冲区中有多个语句,请逐个地执行它们。

-802 不能打开运行文件。

无法打开要你指定的、需要读取的SQL命令文件。请检查一下指定的文件名。如果它拼
写无误,那么请确保它位于当前目录或DBPATH环境变量中的一个目录之中,而且你的
帐户有对它的读取权限。

-803 文件过大,无法进行内部编辑。

你用“选择”选项选定的SQL命令文件太大,无法存入编辑缓冲区中。编辑缓冲区的大
小是动态变化的,程序无法为存放命令文件的内容分配足够的存储空间。(在DOS下,
如果命令文件的大小超过了64K字节,那么也会发生这个错误。)请确保你指定的文件
是你实际需要的,而且是一个SQL命令文件。如果它确实是你希望指定的,那么你只能
将它拆成若干个小的文件,然后分别使用它们。

-804 注释不完整。

这个语句包含一个位于大括号之中的注释 { },但是括号不完全匹配。请检查语句中
的标点符号,确保所有的大括号都有配对。

-805 不能打开装入文件。

打不开LOAD命令中指定的输入文件。请检查伴随的ISAM错误码以得到更多的信息。可
能需要更完整的路径名;文件不存在;你的的帐户没有对它或者它所在的目录的读取
权限。

-806 不能打开卸载文件。

打不开UNLOAD命令中指定的输出文件。请检查伴随的ISAM错误码以得到更多的信息。
可能需要更完整的路径名;文件虽然存在但是你的帐户没有对它的写权限;或者是磁
盘已经满了。

论坛徽章:
0
5 [报告]
发表于 2005-05-20 14:51 |只看该作者

贴个Informix错误代码中文解释供大家参考

-807 不能打开文件进行输出。

程序不能够打开你在Save选项中指定的文件。这个文件应该被保存在当前目录下。这
可能是由于你的帐户没有对该目录的写权限。也可能是由于那个目录中存在一个同名
的只读文件(你可以试试换一个名字保存来消除这种可能性)。也可能是由于磁盘已
满。请检查操作系统信息,它可能告诉你更多的信息。

-808 不能打开选择文件。

你为Choose菜单选项指定的SQL命令文件不能被打开进行输入。请确保此文件在当前目
录中,而且对你的帐户是可读的。

-809 发生SQL句法错误。

当前LOAD语句中的INSERT语句的句法无效。请检查它的标点符号以及关键字的用法。

-810 不能打开用来保存的文件。

SQL命令文件不能被保存。请检查你的帐户是否有对当前目录的写权限,以及磁盘是否
已满。

-811 不能打开打印机进行输出。

应用程序试图打开DBPRINT环境变量中指定的设备,结果失败了。请检查变量的设
置,然后重新运行程序。

-812 不能打开管道进行输出。

在Output选项下你选择了To-pipe并且指定了一个程序或者命令来接收该输出。然而,
INFORMIX-SQL不能够打开到那个程序或者命令的管道。请重新检查一下你键入的命令
或者程序,看它是否是有效的UNIX或DOS命令,而且它必须在当前的可执行程序路径中
可以找到。同时看一下操作系统的错误信息,因为你可能超出了系统在内存或者进程
方面的定额限制。

-813 不能将输出写入管道(没有读取进程)。

在Output选项下,你通过管道将输出送给命令或者程序。尽管管道已经建立起来(表明
命令有正确的句法并且命名了已存在的程序),它可能被关闭了。这表明管道中的(第
一个)程序在接收完所有输出之前终止了。它可能是由于一个错误而退出,也可能是由
于你或者其他用户使用kill命令使它终止了。请检查一下管道程序的信息,这可能会
对它退出的原因予以解释。

-816 不能写文件(检查文件的许可权限)。

不能对前一个命令中指定的文件进行写操作。这很可能是由于你的帐户没有对该文件
进行写操作的权限。请检查许可权限,然后再运行程序。

-817 不能读取文件(检查文件的许可权限)。

不能读取前一个命令中指定的文件。这很可能是由于你的帐户没有对该文件进行读取
的操作系统许可权限。请检查许可权限,然后再运行程序。

-818 未找到指定的用户菜单。

找不到需求的用户菜单。请检查菜单名的拼写。如果它确实是你所希望的,请检查当
前数据库的sysmenus表的内容;该菜单可能未在数据库中定义。

-819 菜单中没有菜单项。

你选定的菜单中没有菜单项。你可以选择其他菜单或者修改当前的菜单。如果你认为
菜单中应该有菜单项,请检查当前数据库的sysmenuitems表的内容。

-820 没有更多的数据可以显示。

被选中的行已经显示完毕。这不是一个可滚屏的显示器;这些行不能被再次显示出
来。你可以从头重新开始查询或者输入一个新的查询。

-821 不能为缺省的报表打开文件。

你已经请求生成一个缺省的报表说明。这个文件被保存在当前目录中,但是某些问题
使操作失败了。这可能是由于磁盘已满或者你的帐户不允许你在这个目录下写入文
件。

-822 语句已经被保存过了。

当前的SQL语句已经用屏幕顶部显示的名字保存过了。(这条信息看起来不再出现。)

-823 没有可以运行的语句。

你选择了Run选项却没有输入SQL语句。你可以输入一个语句或者用Choose装入一个。

-824 Insert语句中遗漏了values子句。

可能任何现在的informix产品不会返回该消息。如果它确实出现了,请参考-836号
错误的讨论。如果错误再次发生,请记录下所有的现场环境信息并与Informix技术
支持部联系。

-825 未找到程序。

无法找到一个支持的可执行文件。它应该位于INFORMIXDIR环境变量指定的目录中。请
与安装informix软件的人联系。

-826 Fork系统调用失败。


这个内部错误表明不能启动一个子进程,这可能发生在使用了"使用编辑器"选项时试
图从DB-Acess进入vi时。请寻找可能给出更多信息的操作系统信息。重试同一操作,
如果错误再次发生,请与你的系统管理员联系。在DOS系统下,你可能遇到了内存不足
的情况;这时你可以退回到操作系统的命令行并重新提交你的程序。

-827 未找到数据库。

请参见错误号-329的讨论。

-828 未找到命令文件。

在当前目录和DBPATH环境变量中列出的目录中都未找到你指定的需要进行编译的SQL命
令文件。请检查名字的拼写以及DBPATH的设置。

-829 未找到屏幕表格。

在当前目录和DBPATH环境变量中列出的目录中都未找到你指定的需要进行编译的屏幕
表格说明。请检查名字的拼写以及DBPATH的设置。

-830 未找到报表。

在当前目录和DBPATH环境变量中列出的目录中都未找到你指定的需要进行编译的报表
说明。请检查名字的拼写以及DBPATH的设置。

-831 在报表说明中发现错误。

在对报表说明进行编译的过程中发现了一个或者多个错误。请编辑报表说明并重新进
行编译。在这条提示的后面可以看到错误信息。它们可以在本书中找到。

-832 在屏幕表格说明中发现错误。

在对报表说明进行编译的过程中发现了一个或者多个错误。请编辑报表说明并重新进
行编译。在这条提示的后面可以看到错误信息。它们可以在本书中找到。

-833 Saceprep不能对报表进行编译。

报表编译器saceprep在对一个报表说明进行编译的时候遇到一个错误。请查找
saceprep和操作系统的其它错误信息,可能会提供更多的信息。

-834 Sformbld不能对屏幕表格进行编译。

报表编译器sformbld在对一个报表说明进行编译的时候遇到一个错误。请查找
sformbld和操作系统的其他错误信息,可能会提供更多的信息。

-835 当前的子句在交互方式下无效。

WHERE CURRENT OF子句只有在使用游标来读取行的程序中才有意义。在当前的交互式
上下文中,你必须在你的WHERE子句中指定CURRENT之外的条件。

-836 插入语句没有values子句。

INSERT语句是当前的LOAD命令的一部分,它需要一个VALUES子句。请进行更正,在
语句中加入一个VALUES子句。

-837 没有足够的可用内存。

INFORMIX-SQL 需要为某一个小的工作区分配内存,但是不能分配。你可以终止程序的
运行,然后重新启动程序;如果这样还不能解决问题,请找你的系统管理员要求更多
的内存。在DOS系统下,你需要释放掉一些磁盘空间。

在4.1版之后,数据库服务器不再产生这条错误信息。请参看-208号错误信息中的相关
错误信息。

-838 装入文件中的一行过长。

LOAD 的输入文件中的每一行必须先整个地读入存储器之后才能得到处理。
INFORMIX-SQL在必要的时候重新设置它的内存缓冲区的大小以保存当前行,但是在当
前的情况下它无法分配足够大的缓冲区。这个错误经常是由于装入文件中有TEXT或者
BYTE类型的数据值,或者非常长的CHAR类型的值。一行的所有值必须包含在装入文件
的一行中。如果你不能获得足够多的可用内存来重新运行程序,那么你修改装入文
件,使之每行中的值更少或者更短。你也可以试用dbload实用工具来装入。

-839 表未被找到。

你指定了当前的数据库中不存在的一个表名。请重新察看表名的拼写并确保你使用了
正确的数据库。请参考-310号错误中关于如何显示所有表的名字的方法。

-840 名字过长。

数据库的名字以及报表、屏幕表格和其他文件的名字的长度不能大于10个字符。请选
择一个新的、更短的名字,然后重复当前的操作。在DOS系统下,文件名中至多可以包
含8个字符和另外3个字符的扩展名。

-841 命名必须以字母或"_"开始,而且只能包含字母,数字或者"_"。

数据库的命名,以及报表、屏幕表格和其他文件的命名都必须遵守上面所述的规则。
请在正确命名之后重复当前操作。从6.0版开始,下列标识符的命名可以以下划线开
始:字段,连接,约束,数据库,索引,过程,同义字,表,触发器,视图,服务器
和游标名。

-842 不能读取临时文件。

INFORMIX-SQL已经生成了一个临时文件;现在它正在试图从临时文件中读取数据。但
是,它接收到一个非期待的操作系统返回码。这可能是由于你或者其他用户已经删除
了这个文件,也可能是由于发生了一个硬件错误。

-843 不能写临时文件。

INFORMIX-SQL正在试图将当前的SQL源文件写入一个临时文件以备编辑,它接收到一个
非期望的操作系统返回码。请察看操作系统的错误消息以得到更多的信息。可能的原
因是你的帐户没有对/tmp目录或者DBTEMP环境变量中指定的目录的写权限,也可能是
因为磁盘已满。从5.01版开始,DBTEMP环境变量由 INFORMIX-SE服务器使用,而不由
INFORMIX-OnLine 动态服务器使用。

-844 语句过长(最多<count>;个字符)。

INFORMIX-SQL不能够分配足够大的内存缓冲区来存放该语句。你只能设法缩短该语句
或者将其写成两个或多个部分。

-845 数据库中没有用户菜单。

本数据库中不包含系统菜单表或者菜单表是空的,也可能由于顶层菜单未命名为
main。确保你正在使用你实际想要使用的数据库。或者咨询为本数据库定义用户菜单
的人。

-846 装入文件中的值的个数与字段的个数不相等。

LOAD 处理程序通过对装入文件的首行的定界符进行计数来判断装入文件中的值的个
数。表中的每一个字段都必须有一个定界符;如果指定了字段列表,那么列表中的每
一个字段都应该有一个分界符。请确保你指定的文件是你真正要的,而且文件中使用
了正确的分界符字符。如果你不能保证这一点,请在LOAD命令中指定分界符。
提示:装入文件中的空白行将导致该错误。确保装入文件尾部没有空白行。

-847 在装入文件的<行号>;行时发生错误。

在装入数据文件的指出的行的数据时出现问题。在插入了指出的行之前的所有行之
后(即插入了<行号>;-1行)。如果该操作位于一个事务中,该事务将被滚回;如果不是
这样的,那么你在重复该操作之前需要删除表中已经插入的行或文件中已经使用过的
行。为了改正文件,请察看一下附加的错误信息,这有助于找出问题所在。可能的原
因是指出的行中的显示字段(分界符)不足或者太多。也可能由于存在数据转换的问
题,例如一个数值型的显示字段中有非数值字符,DATETIME值的格式不正确,或者
一个串数据过长等。还有一种可能是在不允许出现null的字段出现了null显示字段(
长度为0的)。请编辑装入文件以纠正错误;察看一下后续的行中有无类似的问题,然
后重复被中止的操作。

-848 Form4gl不能对屏幕表格进行编译。

你请求对一个屏幕表格说明进行编译,但是屏幕表格编译器报告了一个或者多个错
误。请在改正了屏幕表格说明之后重新进行编译。你可以在<屏幕表格名称>;。err文
件中找到错误信息。

-849 在屏幕表格说明中发现了一个(或多个)警告。

你请求进行编译的屏幕表格说明已经编译完毕,但是屏幕表格编译器报告了一个或者
多个警告信息。虽然你可以不理睬警告信息,直接试一下屏幕表格;但是建议你先消
除这个警告。你可以在<屏幕表格名称>;.err文件中找到错误信息。

-850 用户无权修改此菜单。

只有生成本数据库的系统菜单的用户才能够修改菜单结构。该用户是在本数据库是"当
前的"的时候选择"用户菜单"显示的"修改"选项的第一个用户。按照下面的方法查询
systables找到这个人。

SELECT owner FROM systables WHERE tabname LIKE `sysmenu*'

如果这样不太合适,你可以请求那个人取消系统菜单和系统菜单项表,并且让应该维
护系统菜单的人重新生成菜单。

-851 不能删除文件(检查文件的许可权限)。

你请求删除一个文件,但是这个文件不能被删除掉,这可能是由于你的帐户没有该文
件或者它所在目录的写权限。请使用操作系统命令检查文件的权限。

-852 写操作失败。卸出<计数>;行(检查用户限制或磁盘空间)。

在将<计数>;行输出写入卸载文件之后,再试图写入下一行时发生错误。请检查一下操
作系统信息,它可能给出更多的信息。这可能是由磁盘已满或者磁盘的定额限制引起
的。

-853 由于错误或者遗漏COMMIT WORK,当前的事务被滚回。


在执行一个命令文件中的SQL语句的时候,INFORMIX-SQL 接收到一个错误返回码,或
者执行到文件的尾部却没有找到 BEGIN WORK 语句。由于事务正在进行之中(如果文件
中包含 BEGIN WORK 或者数据库是符合 ANSI 标准的),INFORMIX-SQL 将事务滚回。
(不能留下打开的事务,而且即使没有错误返回也不能假定成功。)

-854 未发现后端或后端忙。

在DOS中,应用不能与本地INFORMIX- SE引擎或INFORMIX- NET PC通讯模块建立连接。

在与SE引擎(访问本地数据库)或INFORMIX- NET PC通讯模块建立连接之前,例如要
使用DATABASE语句,必须先把它们装入。运行PSTARTSQ可装入SE引擎,而运行REMSQL
可装入INFORMIX- NET PC 通讯模块。如果已装入SE引擎或INFORMIX- NET PC通讯模块
而你仍然收到了本错误信息,那么有可能是因为别的应用目前正与SE引擎或
INFORMIX- NET PC通讯模块连接着(它们在同一时刻只能有一个连接),或者当前应
用因为一个内部错而失掉了连接。

如果是前一种情况,你必须要先释放那个连接,然后才能考虑连接当前应用。如果另
外那个连接应用是一个4GL或ESQL/C程序,那么可通过执行CLOSE DATABASE语句或调用
SQLEXIT()函数或索引退出来释放连接。

如果是出现了内部错,你只能退出应用,然后通过DOS命令行杀死SE引擎或INFORMIX-
NET PC通讯模块。杀死SE后,你应该使用不需任何选项的PSTARTSQ命令重启它。要杀
死INFORMIX- NET PC通讯模块,使用-T选项运行SETNET命令。杀死它之后,应该运行
REMSQL重启它。

当某个客户Windows应用使用了错误的.DLL文件通过网络连接数据库服务器时,也可能
出现这条错误信息。INFORMIX- NET PC 4.1版本(如4.1版的ESQL/C)上的Client
Windows应用同样可在INFORMIX- NET for Windows 5.01版本上工作。查看是否有这两
种产品在同一台客户机上并行工作。如果是这样,那么确认5.01版的LDLLSQLW.DLL文
件,在PATH环境变量中的设置出现在4.1版的LDLLSQLW.DLL文件之前。另外,4.1版的
LDLLSQLW.DLL文件不应该出现在下面目录中:当前目录,MS- Windows目录。MS-
Windows的SYSTEM目录,或者包含你正在运行应用的可执行文件的目录。

-855 不能取消一个未分段的表的rowid。

你试图用 ALTER TABLE . . . DROP 句法来取消一个未分段的表的rowid字段。一个未
分段的表有一个rowid字段,但它是不可取消的。

-856 Rowid 在表中已经存在。

指定的表已经存在一个rowid字段。你不能多次为同一个表生成rowid。请修改你的SQL
语句。

-857 Rowid 在表中不存在。

你不能取消一个不存在的rowid。你指定的rowid并不存在于指定的表中。在你的SQL语
句中应该避免使用rowid。可以用主键代替rowid来删除数据。

-858 不能在一个分段存储说明中指定同一个dbspace两次。

你在同一个分段存储说明中多次指定了同一个dbspace。请修改分段存储说明,使每个
分段有不同的dbspace。

-859 'Distributions only'在一个Update statictics LOW请求中是无意义的。

你不能在UPDATE STATISTICS语句的 LOW模式中指定DISTRIBUTIONS ONLY选项。

-860 一个分段的对象拥有的分段数必须大于1。

你将一个对象分成一个分段。要将对象放入一个单个的dbspace,应该使用IN子句代替
FRAGMENT BY 子句。

-861 不能够生成新的PDQ线索。

更多的信息请参见伴随的 ISAM 错误。

-862 变更分段连接必须至少指定一个被消耗的表。

你还没有指定将被消耗的表。请参见 INFORMIX-SQL 指南: 句法部分中关于ALTER
FRAGMENT . . . ATTACH 的句法和用法。

-863 不能够分离一个带rowid的表。

在你使用ALTER FRAGMENT . . . DETACH之前,你必须先取消rowid。请参阅
INFORMIX-SQL 指南: 句法部分的句法和用法。

-864 不能够连上一个带rowid的表。

在你连上一个表之前,你必须先取消残留表上的rowid。

-865 不能在增加或取消rowid的同时进行其他的变更表选项。

你必须使用一个单独的ALTER TABLE . . . ADD 或 ALTER TABLE . . . DROP 语句来
增加或取消rowid。

-866 不能连上包含serial字段的表。

在使用一个 ALTER FRAGMENT . . . ATTACH 语句之前,你必须先取消所有的serial字
段或者修改字段的类型。

-867 不能生成新的rowid。

更多的信息请参见伴随的 -ISAM错误。如果一个表中有serial或rowid字段,那么表中
能够容纳不超过2G字节的记录。

-868 不能对残留表进行约束检查。

如果残留表上有检查、参考、主键或NOT NULL约束,你就不能连上这个表。你应该先
取消检查、参考或NOT NULL约束,连上表,然后重新建立那些极为重要的检查、参考
或NOT NULL约束。

-869 在分段存储表达式中不允许出现子查询和过程。

分段存储表达式只能引用当前表中的字段和一个单个行的数据值。这种限制使子查
询、存储的过程等都是不允许的。

-870 不能重复指定其余分段。

你指定了重复的其余分段。请从你的SQL语句中删除一个其余分段。

-871 Remainder分段只能在最后指定。

如果你指定了一个REMAINDER,它必须是最后一个分段表达式。请重写你的句法,在最
后指定其余字段。

-872 在唯一的索引情况下的无效分段策略或表达式。

唯一的索引不能用 round-robin 方法分段。如果索引是用表达式方法分段的,那么分
段表达式中使用的所有字段都必须是索引键的一部分。

-873 无效的分段表达式字段。

你不能在一个分段表达式中同时使用不同表中的字段。

-874 发生浮点异常错误。

这个内部错误影响查询优化程序产生的费用计算。如果这个错误再次发生,请记录所
有的环境信息并与 Informix 技术支持部联系。

-875 存取方式与隔离级不兼容。

如果你将存取方式设为 READ-WRITE,你就不能将隔离级设为 READ-UNCOMMITTED。

-876 在一个事务启动之后不能使用 SET TRANSACTION。

当有一个事务是活动的时候,不要使用 SET TRANSACTION 语句。在执行了 DLL
或者 DML 语句之后,一个事务成为活动的。在 BEGIN WORK 与 SET TRANSACTION
语句之间只允许有 SET EXPLAIN,SET CONSTRAINT,SET DATASKIP 等 SET 语句。

-877 隔离级已由前面的 "Set Transaction" 设置。

你的程序试图在 SET TRANSACTION 语句建立了隔离级之后对它进行重置。不要在一个
SET TRANSACTION 语句的后面使用 SET ISOLATION 语句。

-878 对一个 READ-ONLY 事务进行了无效的操作。

你在 SET TRANSACTION 语句中指定了一个 READ-ONLY 事务,然后试图变更
数据库。也就是说,READ-ONLY 保证你可以读取数据,但是你不能够变更数据。如果
你希望变更数据,你应该在 SET STATEMENT 语句中指定 READ-WRITE。如果你仅仅
希望读取数据,请改正你的程序,使之不再试图去变更数据。

-879 Trim 字符必须为 null 或者长度为1。

TRIM 函数计算出的值为 NULL。但是,TRIM 字符值表达式必须为 null 或者只包含一
个字符。你编写的程序有错误。如果 TRIM 计算出的值为 NULL,说明你的程序插入
TRIM字符值表达式的值既不是 null ,也不是单个字符。请改正该错误,程序编译,
然后重新运行你的程序。

-880 Trim 字符和 trim 来源必须都是串数据类型。

当你使用 TRIM 函数时,TRIM 字符值表达式与来源字符值表达式的数据类型发生冲
突。字符与来源的值表达式都必须是串数据类型的。请检查一下 TRIM 函数的句法,
确保字符与来源的值都是串数据类型的。

-881 TRIM的返回串的长度必须介于1到255个字符之间。

TRIM函数返回的串的长度不是介于1到255个字符之间的。TRIM函数返回一个VARCHAR
串,而VARCHAR串的长度必须介于1到255个字符之间。确保TRIM返回的串的长度在有
效范围之内。

-882 不能在一个未被分段的表上生成rowid。

你试图使用ALTER TABLE . . . ADD句法在一个未被分段的表上增加一个rowid字段。
这不是合法的用法,因为已经存在一个rowid字段,非分段的表上总是存在rowid的。

-883 不能对分段存储表达式求值。

你的程序中的一个分段存储表达式是无效的。请检查并改正之。请检查表达式的逻
辑。表达式中的某些元件可能并不代表实际存在的或定义的元素,例如字段、散列
值,范围,索引键等。

-884 不能变更临时表上的索引。

你的程序试图变更临时表上的索引。请改正你的程序。

-885 传给dbinfo(utc_to_datetime)的utc 时间是无效的或NULL。

你试图将一个无效的或者NULL值传递给dbinfo()函数。请确保你传递到dbinfo()
函数的值是有效的、非空的。

-886 由于依赖关系的存在,不能取消表或视图。

当你使用DROP TABLE或DROP VIEW语句时,如果你指定了RESTRICT选项并且存在一个视
图或者外码约束依赖于表或视图,那么表或视图不能被取消。当你指定了RESTRICT选
项并且该表存在一个检查和诊断表时,你同样不能取消该表。

-887 由于权限、视图或约束的限制,不能取消。

你不能使用RESTRICT选项REVOKE一个权限,如果该操作将导致被抛弃的权限、被抛弃
的视图或者被抛弃的表约束。请参考INFORMIX-SQL指南:Tutorial 中的说明。

-888 不能连上一个有约束的表。

你试图连上一个有约束的表。请先将所有的参照的和主的约束去掉,然后重新试图继
续连接。

-889 内部的dataskip条件应该重新定位到下一行并继续。

如果这个内部错误再次发生,请记录下所有的现场信息并与Informix
技术支持部联系。

-891 临时表对象仅仅可以被激活

你不能改变临时表目标的目标模式为使不能的或者为过滤目标模式。

-892 不能使目标<目标名>;无效,由于其它活动目标正在使用它。

其它目标正在使用这个目标,如果正在使无效的目标是一个索引,则一个唯一约束,
基本约束或者引用约束可能正在使用这个目标。如果这个目标是唯一的或者是基本约
束,则可能一个引用约束正在使用这个目标。

-893 因为它的依赖性不能激活/产生目标<目标名>;。

用户已经发布了一个SET已经去设置数据库目标为使能或者过滤目标模式。或者用户已
经发布一个CREATE INDEX,CREATE TRIGGER或者CREATE TABLE已经去产生一个使能的或
者过滤模式的数据库目标。但是,这个目标需要其它的无效目标。比如,在使能一个
表上的引用约束时,用户必须首先激活该约束需要的索引。

-894 不能找到目标<目标名>;。

用户在SET语句中明确指定的目标名称在数据库中没有找到。

-895 不能产生检查/诊断表。

用户已经为一个目的表发布一个 START VIOLATIONS TABLE 语句。数据库服务器不能
为这个目的表产生检查和诊断表。任一下列情况均可是失败的原因:

* 目的表已经有一个检查/诊断表。

* 在START VIOLATIONS TABLE 语句中指定检查和诊断表的名称是非法的。
比如,如果你在语句中漏了USING子句并且在目的表名称中的字符数加上四个字符
比最大标识符长度长,检查和诊断表的产生的名称将比最大标识符长度长。
如果检查和诊断表的名称因为这个原因非法,用户可以在START
VIOLATIONS TABLE 语句的USING短语中为检查和诊断表给出清晰的名称来纠正
这个问题。

* 在START VIOLATIONS TABLE 语句中指定检查和诊断表的名称于数据库中
已经存在的表名称匹配。

* 目的表包括名为 informix tupleid 或者informix optype的列。由于这
两个名称将复制检查表中的informix tupleid 或者informix optype的列,数据库
服务器不能产生检查表。

* 目的表是临时表。

* 目的表正在作为其它表的检查或者诊断表。

* 目的表是系统目录表。

-896 没有为目的表打开检查表。

如果一个检查表或者诊断表没有为目的表开动,并且一个INSERT,DELETE,或者
UPDATE语句不能满足任一个表上的过滤模式的目标,发布这个INSERT,DELETE或者
UPDATE语句的用户收到这个消息。

要从这个消息恢复,你必须为目的表开动检查表和诊断表。然后当用户发布不能满足
定义在该表上的过滤模式目标的INSERT,DELETE或者UPDATE语句时,他们不会收到
这个消息。

-897 不能修改/删除一个检查/诊断表

用户试图修改或者删除正在作为另一个表的检查表或者诊断表的表。

-898 不能改变与检查/诊断表联系的表。用户试图增加,删除或者修改某个有检查
和诊断表与之相联系的表中的一个列。

-899 太多的冲突

在诊断表中的记录数超出或者将要超出在START VIOLATIONS TABLE语句中的MAX ROWS
短语指定的上限。当一个在目的表上的简单语句(比如INSERT或者SET语句)
引起要插入到诊断表的记录数比用MAX ROWS短语指定的上限多时。这个错误将返回给
在该目的表上发布语句的用户。

-903 许可的INFORMIX-SQL服务器不能被访问。

这个语句引用了另外的宿主计算机系统,而且那个系统是活动的、可访问的。然而,
sqlexecd网络daemon没有被启动,因此,不能从它那里得到数据库服务。请与该系统
的DBA联系。请确保INFORMIX-STAR和INFORMIX-NET是正确安装的。

-904 授权文件未在许可的INFORMIX-SQL服务器上注册。

这条信息表明Informix网络软件的安装不完全正确。请检查工作站和网络服务器上的
安装步骤,确保它是正确无误的。

-905 不能定位在/etc/services中定位sqlexec service/tcp 服务。

这个系统的INFORMIX-STAR或INFORMIX-NET软件安装得不正确。具体来说,未生成系统
配置文件/etc/services (UNIX)或 \etc\services (DOS) 中的入口。请与安装你的
Informix软件的人联系。

-906 不能定位远程系统(检查DBPATH)。

INFORMIX-NET正在搜索当前语句中请求的数据库。它使用DBPATH环境变量中提供的
入口,逐个进行尝试,它使用//<节点名>;的格式指定其它计算机系统上的目录。那个
系统是不可访问的。请检查DBPATH环境变量的设置。确保它所指定的所有其它系统都
安装了INFORMIX-STAR 或者INFORMIX-NET,并且当前是活动的。这条信息出现在
6.0版之前。

-906 不能够定位数据库服务器(检查DBPATH)。

在你的DBPATH环境中指定的服务器名称是不正确的。确定在DBPATH设置中,每一个服
务器名称都是正确的,且未超过18个字符。6.0版後有这条信息。

-907 不能生成当前数据库服务器的套接字。

INFORMIX-STAR 或者INFORMIX-NET正在试图访问另外的计算机系统,但是不能建立
连接。请求你的系统管理员检查TCP/IP是否已经正确安装而且功能正常。

-908 试图连接到数据库服务器(<服务器名>;, conerr=<连接错误号>;,
oserr=<系统错误号>失败。

程序或应用正在试图访问其它的数据库服务器,但是失败了。请记录下当前语句中的
服务器名以及消息中显示的连接错误号和系统错误号。

所需的数据库服务器是不可使用的,或者由于网络已经关闭或被堵塞。请求你的DBA和
网络管理员确认服务器和网络是否仍正在正常工作。如果网络被堵塞,可以通过设置
INFORMIXCONTIME和INFORMIXCONRETRY环境变量来调整连接计时。请参考
"INFORMIX-SQL指南:参考手册"的第4章中关于设置这些环境变量的说明。

这条信息出现在6.0及以后版本。

-908 试图连接到远程系统失败。

INFORMIX-STAR 或 INFORMIX-NET正试图存取另外的计算机系统,且已失败。
注意目前语句中的节点名。以一个日志文件开始daemon,并在这个日志文件中检查
操作系统错误。如果得不到结论,就与系统管理员联系,并要求检查网络是否
可运作,及特定节点是否活跃。

这条信息在6.0版之前的数据库服务器里出现。

-909 无效的数据库命名格式。

这个语句看来引用了另外的数据库服务器上的数据库,但是数据库名称、节点名或服
务器名、标点可能有误。请重新检查语句,确保所有的限定符都以字母开头(6.0及以
后版本,也可以是下划线),并且名字中只包含字母、数字或下划线,而且以
dbname@sitename或 //sitename/dbname(6.0之前的版本),或者dbname@servername
或 //servername/dbname(6.0及以后版本)的格式。如果你正在使用INFORMIX-
OnLine for NetWare,请检查你是否按照产品手册中解释的几种格式提供了远程数据
库的名字。

-910 不能从一个INFORMIX-SE客户机上创建一个INFORMIX-OnLine
数据库。

CREATE DATABASE语句不能被执行,原因在于你的工作站上与另一个计算机系统上的数
据库服务器产品的类型不同:一个是OnLine,而另一个是INFORMIX-SE。当你在这种配
置下操作数据库时,你不能创建数据库。为了能够创建,或者在两个系统上运行同样
的产品,或者在其它计算机系统上运行本地命令。SQLEXEC环境变量(对于6.0之前的版
本)决定了你的应用程序使用哪个数据库服务器。

-911 系统错误 - 不能从管道读取。

这是一个内部错误,它反映了你的应用程序与INFORMIX-STAR或者INFORMIX-NET
软件之间的通讯有误。请检查操作系统提供的错误信息。重新启动应用程序。如果问
题再次发生,请记录下所有的现场信息并与Informix技术支持部联系。

-912 网络错误 - 不能写到数据库服务器。

发生了网络错误。请检查操作系统的错误信息。重新启动应用程序。如果问题再次发
生,请与你的系统管理员联系,并请求他运行网络诊断程序。

-913 网络错误 - 不能从数据库服务器读取。

发生了网络错误。请检查操作系统的错误信息。重新启动应用程序。如果问题再次发
生,请与你的系统管理员联系,并请求他运行网络诊断程序。

-914 系统错误 - 不能写到管道。

这是一个内部错误,它反映了你的应用程序与INFORMIX-STAR或者INFORMIX-NET
软件之间的通讯有误。请检查操作系统提供的错误信息。重新启动应用程序。如果问
题再次发生,请记录下所有的现场信息并与Informix技术支持部联系。

-915 不能从一个INFORMIX-OnLine客户机上创建一个INFORMIX-SE
数据库。

CREATE DATABASE语句不能被执行,原因在于你的工作站上与另一个计算机系统上的数
据库服务器产品的类型不同:一个是OnLine,而另一个是INFORMIX-SE。当你在这种配
置下操作数据库时,你不能创建数据库。为了能够创建,或者在两个系统上运行同样
的产品,或者在其它计算机系统上运行本地命令。SQLEXEC环境变量决定了你的应用程
序使用哪个数据库服务器(对于6.0之前的版本)。

-916 NFS安装表错误。

你试图存取的数据库服务器或者你的DBPATH环境变量中指定的一个路径位于一个NFS
文件系统上。然而,数据库服务器或客户应用程序在访问NFS安装表文件/etc/mtab
(或者,在某些操作系统上的/etc/mnttab)时遇到了一个错误。这可能是因为你的帐户
没有对它的读取权限。请与你的系统管理员联系,使这个文件成为公众可读的。

这条信息出现6.0及以后版本。

-916 不能开启 /etc/mtab。

数据库服务器需检查系统配置文件/etc/mtab 来辨认文件系统的位置。然而,当它尝
试去读取这文件时发生错误,可能是你的帐户没有读取它的权限。与你的系统管理员
联系,而且使这个文件设成公共可读取的。

这条消息出现在6.0及以后版本。

-917 在使用一个新的数据库之前必须关闭当前的数据库。

这个语句(DATABASE 或者 CREATE DATABASE)要求打开不同的数据库。然而,当前的数
据库位于另外的计算机系统上,因此,你必须使用显式的CLOSE DATABASE
命令将其关闭。(如果你当前使用的数据库与应用程序位于同一个计算机系统上,数据
库服务器会自动将其关闭。)如果这个错误被一个程序收到,请重新检查程序的逻辑,
确保它在[CREATE] DATABASE语句之前执行了一个CLOSE
DATABASE语句。这适用于网络和本地两种情况。

-918 收到非期望的来自其它数据库服务器的数据。

这个内部错误反映了你的应用程序与其它节点上的INFORMIX-STAR或者INFORMIX-NET软
件的通讯错误。请重新启动你的应用程序。如果问题再次发生,请求你的系统管理员
运行网络诊断程序。如果错误再次出现,请记录下所有的现场信息并与Informix技术
支持部联系。

-919 系统错误。传递给数据库服务器进程的参数个数非法。

这个内部错误反映了在你的应用程序与INFORMIX-STAR、INFORMIX-NET软件或者其它计
算机系统上的数据库服务器的通讯出了问题。首先请确保所有三个软件元件处于互相
兼容的状态。(对于6.0之前的版本,请参考相应的INFORMIX-NET/INFORMIX-STAR 安装
与配置指南中的兼容性图表)。在必要的时候要重新编译和连接你的应用程序。如果问
题再次发生,请记录下所有的现场信息,并与Informix技术支持部联系。

-921 系统错误。传递给sqlexec服务器的参数个数非法。

这个内部错误反映了在你的应用程序与INFORMIX-STAR、INFORMIX-NET
软件或者其它计算机系统上的数据库服务器的通讯出了问题。首先请确保所有三个软
件元件处于互相兼容的状态。(对于6.0之前的版本,请参考相应的
INFORMIX-NET/INFORMIX-STAR 安装与配置指南中的兼容性图表)。在必要的时候要重
新编译和连接你的应用程序。如果问题再次发生,请记录下所有的现场信息,并与
Informix技术支持部联系。

-922 不能取得当前工作目录名字。

在你的应用程序正在使用的这个系统或者其它系统上的工作目录出了问题。可能是因
为你的帐户对该目录没有读取的权限,或者是因为包含该目录的文件系统安装得不正
确。请退出应用程序的执行并重试。如果问题依然存在,请与你的系统管理员联系。

-923 INFORMIX未被许可为只访问当前的数据库服务器。

Informix产品的这个版本未被许可为网络用途。请找到许可用于INFORMIX-STAR
或者INFORMIX-NET的版本,并重设你的INFORMIXDIR环境变量和SQLEXEC环境变量(用于
6.0之前的数据库服务器版本)以指向它。

-924 INFORMIX未被许可以访问指定的数据库服务器。

如果你在你的客户机上只安装了一个INFORMIX-NET NET工作站软件包,那么你就不能
访问本地驻留的数据库。如果你试图访问的数据库并不是本地驻留的,那么请在数据
库的名字前面指定节点,并重试此命令,或者通过设置你的DBPATH环境变量来指示只
在指定的节点上搜索。如果你希望你的数据库产品同时能够访问本地和远程的数据
库,请与你的Informix代理联系如何购买相应的Informix产品。

-925 协议的类型应该是tcp。

OnLine上的$INFORMIXDIR/etc/sqlhosts文件或者INFORMIX-OnLine for Netware
上的\INFORMIX\etc\sqlhosts文件中的协议类型应该是tcp。

-926 INFORMIX- OnLine未被许可为分布式用途的数据访问。

这个语句引用了其它计算机系统中的数据库,例如,以dbname@sitename:table这样
的形式对表名进行限定。然而sitename节点机上活动的-OnLine的版本没有被许可为
此种用途。使用当前的版本,你只能使用在同一个数据库服务器上的数据库中的表。
请与你的Informix代理联系,看看如何将此数据库服务器升级为完整的INFORMIX-
STAR状态。如果你确认已经安装了INFORMIX-STAR,那么请检查INFORMIXDIR环境变量
的内容。如果你正在使用INFORMIX-OnLine for NetWare,那么除非你拥有INFORMIX-
NET PC系统,否则你无法访问远程系统上的表或者数据库。

-927 超过了你可以引用的服务器的最大个数。

这个语句包含对多于数据库服务器可以处理的节点的引用。从4.1版开始,出现在一个
语句中的不同节点的个数最多可达32个(后面的版本可能允许更多的节点数)。请重新
检查这个语句,确保它只引用了必要的节点。如果确实有必要,请修改操作以使用更
少的节点;例如,先把一部分数据选进一个本地的、临时的表中。

-928 数据库服务器未被许可为分布式用途的数据访问。

这个语句引用了其它计算机系统中的数据库,例如,以dbname@sitename:table
这样的形式对表名进行限定。然而sitename节点机上活动的OnLine的版本没有被注册
为此种用途。这指示了其它计算机系统的安装错误:它被配置为适合网络访问的,但
是启动了错误的数据库服务器。请与网络管理员联系,请求在启动sqlexecd daemon的
时候对环境变量进行检查。如果你正在使用INFORMIX-OnLine
for NetWare,那么你试图去访问了未许可远程访问的一个OnLine系统上的表;你只能
访问其它的INFORMIX-NET PC系统。

-930 不能连接到数据库服务器<服务器名>;。

这个应用程序正试着存取另一个计算机系统,且已失败。注意在目前语句中的服务器
名称。要求你的网络管理员及DBA检查网络是否可运作,并检查数据库服务器是否活
跃。这条信息从6.0及以后版本出现。

-930 不能连接到远程主机<节点名>;。

INFORMIX-STAR或者INFORMIX-NET正在试图访问另外的计算机系统,但失败了。
请记下当前语句中的节点名。请与你的网络管理员联系,请求检查网络是否是可用
的,所指的节点机是否是活跃的。这条信息出现在6.0版之前版本的数据库服务中。

-931 不能在/etc/services中找到<服务名>;service/tcp服务。

上面提到的服务未被列在/etc/services(UNIX)或者\etc\services(DOS)网络配置文
件中。请检查$INFORMIXDIR/etc/sqlhosts文件,确保所需的服务的名字拼写正确。
如果是正确的,请与你的网络管理员联系,找出服务未知的原因。如果你使用的是
INFORMIX-OnLine for NetWare,请检查客户机上的\etc\services文件中相应的
入口。

-932 网络连接错误,<函数>;系统调用失败。

这是一个内部错误,它反映你的应用程序与其它节点上的网络软件(INFORMIX-STAR,
INFORMIX-NET, INFORMIX-NET for Windows, 等等)的通讯发生了错误。重新启动你的
应用程序并察看可能提供更多信息的操作系统信息。

如果你使用的是INFORMIX-NET for Windows,那么这可能是一个Windows Sockets
错误。请察看你的Windows Sockets 1.1的文档中的信息。检查特殊的Windows
Sockets消息的sqlca结构的sqlerrm域。

在ASCL环境中,这个错误可能表示informix.ini文件有问题。验证SERVICE、HOST及
PASSWD入口都是正确的。

如果这个问题再次发生,请求你的网络管理员运行网络诊断程序进行诊断。如果错误
再次发生,请记录下全部的现场环境信息并与Informix技术支持部联系。

-933 DBNETTYPE中指定了未知的网络类型。

在某些机器上,DBNETTYPE环境变量被用来在两种可用的网络协议中选用其中之一。它
的当前设置值是一种不被支持的类型。请显示变量的值,确保它的设置是正确的。对
于6.0版之前的版本,请参考INFORMIX-NET/INFORMIX-STAR安装与配置指南中关于
如何正确设置的说明。如果你正在使用INFORMIX-OnLine for NetWare,可将
DBNETTYPE设为starlan, tcp/ip或者其它被支持的网络。

-934 到远程节点的连接不再有效。

这个语句使用了来自其它计算机系统的数据,而连接已经丢失。请重新建立连接,然
后将事务滚回并重试一次。

-935 不能获得服务器名<服务器名>;的IPX地址。

你正在试图用一个服务器名通过带有可移植的INFORMIX-OnLine for NetWare系统上的
IPX/SPX网络协议去连接一个数据库服务器。客户应用程序,INFORMIX-NET
或者INFORMIX-STAR不能决定指定的服务器名字所对应的IPX地址。可能的原因包括:
你的sqlhosts文件中的服务器名字拼写错了;sqlexecd daemon程序或者OnLine数据库
服务器现在没有运行起来,或者是可移植的INFORMIX-OnLine for
NetWare软件操作得不正确。请求你的DBA或者系统管理员确认sqlexecd daemon,
数据库服务器以及可移植的INFORMIX-OnLinefor NetWare软件是可用的。

-936 在远程连接<连接名>;时发生错误。

试图连接到一个远程主机的企图失败了。请检查你的连接语句(即CONNECT,DATABASE
等等)中指定的连接的名字,以确保你正确地指定了连接的名字和路径。检查有没有错
误的拼写。检查有没有错误的连接名。

-951 数据库服务器不认识用户<用户名>;。

你试着要存取的数据库服务器不能接受你的用户id,或在~/.netrc文件上所要连接上
的服务器主机的注册名称,或在CONNECT语句中USER子句中所指定的用户名称。
如果你在~/.netrc文件中或在CONNECT语句指定你的用户名称,确定这名称是对的。
如果你在服务机器没有可以有效使用的用户id,找你的系统管理员。
(6.0及以后版本有这条信息)。

-951 用户是远程主机所不知道的。

这条语句引用了其它计算机系统上的一个数据库,但是你的帐户名不被其它系统接
受。你必须拥有你要访问的计算机系统的有效登录身份。请问一下你的网络管理员怎
样得到一个登录身份。(这条信息出现在6.0版之前的版本中。)

-952 数据库服务器的用户密码不正确。

服务器计算机~/.netrc文件中指定的密码,或是CONNECT语句中USER子句不正确。
数据库服务器不能接受(或是找不到)你的帐户密码。确定你的密码被正确指定。再试
一下。(6.0版後有这条信息)。

-952 远程主机的使用者密码不正确。

在另一个计算机系统的数据库服务器不能接受(或找不到)你的帐户密码。请检查你的
密码是否正确录入到授权文件或密码文件中。(这个信息出现在6.0版以前的版本)。

-953 网络服务器不能执行sqlexec程序。

网络服务器不能启动数据库服务器线程。导致这个错误的最常见的原因是root在启动
数据库服务器进程时定义INFORMIXDIR环境变量失败。请与你的网络管理员联系,请求
远程系统上的数据库服务器进程使用Informix软件的有效路径重新进行启动。
(这条信息从6.0及以后版本出现。)

-953 远程主机无法执行 sqlexec 程序。

在其它计算机系统的网络daemon,splexec,无法启动数据库服务器程序。这个错误的
最常见原因,是由根在启动daemon时定义INFORMIXDIR和SQLEXEC环境变数失败。
请与网络管理员联系,并要求在远成系统的daemon以至Informix软体的正确路径重新
启动。(这个信息在6.0版以前出现)。

-954 客户机是远程主机不知道的。

你的正在运行的应用程序所在的计算机是你试图访问的计算机所不知道的计算机。请
与你的网络管理员联系,请求他使你的计算机成为可知的。通常使一台计算机被其它
系统知道的方法是通过修改其它系统上的/etc/hosts.equiv配置文件。请参考
INFORMIX-NET/INFORMIX-STAR安装与配置指南。(这条信息出现在6.0版之前的
版本中。)

-954 数据库服务器不认识客户机。

你正试着存取的数据库服务器,不能辨认正在执行你的应用程序的机器。请与你的网
络管理员联系,要求将你的计算机成为可辨认的。通常让一部机器成为可辨认的方法
是通过在另一系统中的配置文件/etc/hosts。(这条信息在6.0及以后版本出现)。

-955 远程主机不能接收到来自客户的数据。

这是一个内部错误,它反映了你的应用程序与其他节点的INFORMIX-STAR或
INFORMIX-NET软件进行通讯时发生的错误。请重新启动你的程序。注意操作系统信息
中可能提供更多的信息。如果此问题再次发生,请求你的网络管理员进行诊断。如果
此错误再次出现,请记录下所有的现场信息并与Informix的技术支持部门联系。(这条
信息出现在早于6.0的版本中。)

-955 数据库服务器不能接收到来自客户的数据。

这是一个内部错误,它反映了你的客户应用程序与其他节点的数据库服务器软件进行
通讯时发生的错误。请重新启动你的程序。注意操作系统信息中可能提供更多的信
息。如果此问题再次发生,请求你的DBA执行网络诊断程序进行诊断。如果此错误再
次出现,请记录下所有的现场信息并与Informix技术支持部联系。(这条信息从6.0版
开始出现。)

-956 远端主机里的 / etc / hosts.eguiv 没有用户端<用户端名称>;。

因为用户端机器(当地主机,其名称由 hostname指令返回)的名称无法被指定的远方
机器辨别。用户端名称正常是记录在配置文件 / etc / hosts.equiv中。远程机器
的rhosts 文件亦可能需要修改。这些档案的详情可试着在UNIX系统打man rhosts。
找远程主机管理员;确认用户端主机名称有指定在远程主机的 /etc/hosts.equiv
文件中。6.0之前版本有这条信息。

-956 客户端<客户端名>;或用户不受数据库服务器信任。

客户端计算机或你的id并未经由数据库服务器信任。要求系统管理员将客户端计算机
包含进去,成为可信任主机;及(或)将你的用户id加在服务器中的/etc/hosts.equiv
文件,或是将你的用户id加在服务器中你的用户目录中的.rhosts文件,成为受信任的
用户。请参阅UNIX手册中有关 HOSTS.EQUIV(5) 的部分以得到更多信息。

相对地,你可以在CONNECT语句USER子句明确指定你的用户名称及密码。请参阅
<<INFORMIX-SQL指南: 语法中关于CONNECT语句的信息>;>;,和 UNIX 手册中有关
NETRC(5) 的页,以得到 .netrc 文件的信息。这条信息从6.0版以後才有。

-957 在 NFS 安装上不能建立/访问数据库。

在这个错误发生时,请注意你的系统的特殊性,并打电话给 Informix 技术支持。

-971 检测到完整性冲突。

用户试图改变一个无效的约束或者无效的唯一索引为有效的或者为过滤模式。
但是SET语句因为表中存在与约束或者唯一索引要求的冲突而失败。
如果一个冲突表已经为一个具有不一致数据的表开动,这个消息将返回给用户。
无论是否SET语句中包括了WITH ERROR 选项,这个消息都要返回。

类似的,当一个INSERT,DELETE或者UPDATE语句引起一些记录加入到冲突表中,
由于该语句与一个过滤模式的目标冲突,如果以下两个条件为真的话,这个消息将返回
给用户:


* 为该目标指定过滤目标模式的SET语句或者CREATE语句中包括
WITH ERROR选项。

* 在INSERT,DELETE或者UPDATE语句中没有遇到其它的错误。

-972 不能更改表<表名>;。

现场修改表不能完成。请参见相伴的ISAM错误的更多消息。

-973 不能从检查表插入到目的表。

用户已经发布了一个试图插入检查表的行到目的表的语句。
比如,用户键入以下语句:

INSERT INTO mytable SELECT * FROM mytable_vio

如果目的表具有一些过滤模式的目标,这个错误被返回给用户。用户可以用下列方法
恢复:

* 设置过滤目标的目标模式为其它模式*停止检查表*插入检查表中的行到一个
临时表,然后把临时表中的行插入到目的表。

-974 不能删除在SERIAL列上的非空约束。

用户发布了一个命令删除在一个具有SERIAL数据类型的列上的NOT NULL 约束。
这些约束可以被置为无效,但是它们直到该列被删除时才可被删除。

-975 非法的目标和目标模式组合。

用户试图在一种不适合某目标类型的目标模式下产生一个新的目标,或者用户设置
一个已经存在的目标的目标模式为一个与该目标类型不合适的模式。比如,如果用户
试图在过滤模式产生一个触发器,或者把一个已经存在的触发器设置为过滤模式,
用户收到这个错误。

-976 表必须被表达式分段来授予分段的权力。

用户试图对一个没有分段的表或者没有被表达式分段的表授予分段级别的权限。

-977 对分段(<dbspace名字>没有权限

用户在表分段上没有必须的分段-级别的权限。这个消息常常跟有其它指示用户缺少权
限的消息。如果一个INSERT语句失败,第二个后跟的消息是 -271。如果一个UPDATE语
句失败,第二个后跟的消息是 -346。如果一个DELETE语句失败,第二个后跟的消息是
-240。

-978 对检查/诊断表没有插入权限

用户对一个表带过滤模式目标地发布一个INSERT,DELETE,或者UPDATE语句。因为
用户缺少对与该表相联系的检查或者诊断表的INSERT权限,用户会收到这个消息。
用户必须在数据库服务器能够写入列到该用户的检查和诊断表之前具有对该检查和
诊断表的INSERT权限。

类似的,如果用户已经发布了一个SET语句去改变一个无效的约束或者一个无效的唯
一索引的目标模式为有效的或者为过滤模式,并且如果一个检查表已经被为目的表
启动,如果用户缺少与目的表联系的检查或者诊断表的INSERT权限,用户会收到这个
消息。

-999 尚未被实现。

这是一个不应该出现的内部错误。如果该错误再次发生了,请记录下全部现场环境信
息,并与Informix技术支持部联系。

-1003 环境中的ACCEPTKEY设置无效。

ACCEPTKEY环境变量中指定的键无法解释;它没有以F开头,或者它的号码是无效的。
请另外指定一个键。

-1004 被选定的ACCEPTKEY已经预先被分配给ISQL。

ACCEPTKEY环境变量中指定的键是一个总被 INFORMIX-SQL使用的键。请为环境变量
设置另外的值。

-1005 你指定的termcap文件不能被读取。

TERMCAP环境变量指定了一个文件,但是不能打开这个文件。可能是由于文件根本不存
在,或者是由于你的帐户没有对它进行读取的操作系统许可。请检查环境变量以及它
命名的文件。

-1006 错误号。

只显示了返回错误的代码,但程序不能显示出这个代码所代表的消息文本,可能是由
于某一个.iem消息文件不在INFORMIX环境变量指定的目录中。请在手册中查找这条错
误信息。你也可以询问安装Informix软件的人员,找出消息文件不能使用的原因。

-1007 INFORMIXTERM 环境变量有非法值。

INFORMIXTERM 环境变量仅有的合法设置是termcap和terminfo。设置变量值为termcap
(或保持未定义)指示 4GL 在终端控制时使用TERMCAP设备。设置变量为terminfo导
致4GL 使用TERMINFO设备。其他设置,包括termcap和terminfo中有大写字符都将引出
这条信息。

-1008 termcap入口太长了。

当应用程序初始化时,TERMCAP环境变量或termcap数据库中termcap入口的内容被读进
存储中。然而,分配用来保存termcap人口的内存缓冲区只有1,024字节,现正使用的
比这要长。你将不得不用一个简单些的termcap。

-1009 错误的termcap入口。

当应用程序初始化时,TERMCAP环境变量或termcap数据库中termcap入口的内容被读
进存储中。在这个过程中,程序在termcap入口中发现不合适的标点符号,具体来
说,一个期望出现的冒号没有出现。检查指定的termcap并且选择不同的一个或修改
现在这个。

-1010 tc= 间接的次数太多。

在终端的termcap定义中,入口tc= 定义要使用其它终端的缺省值。定义其它终端的时
候可能也使用了tc=入口。但是,4GL不允许有超过4个 tc= 命令。现在正在使用的
termcap的定义(由TERM或TERMCAP环境变量指定)超出了这个限制。请写出或找到更
为自包含的termcap定义。

-1101 变量地址为NULL。

这是一个内部错误。

-1102 屏幕表格中找不到该显示字段名。

在INPUT,INPUT ARRAY,CONSTRUCT,SCROLL或DISPLAY语句中列出的显示
字段名在当前显示的屏幕表格的表格说明中找不到。检查程序逻辑结构,确认当前
窗口正是想显示的窗口,想显示的屏幕表格也显示在该窗口中,并且该语句中所有的
显示字段名称拼写正确。

通常的问题是试图使用显示字段标志代替显示字段名称。显示字段标志是写在屏幕图
形中的名字并且它显示在该显示字段ATTRIBUTES语句的左边。它不是用于输入或输出
的显示字段的名字。显示字段名字是它所关联的字段的名字。这个名字在ATTRIBUTES
语句显示等号的右边:

ATTRIBUTES

f000 = customer.customer_num,color=red;

在上例中,显示字段名是custerm_num。在INPUT语句中使用标志f000将产生一个
错误。

-1103 这个值不是合法的值。

为该字段建立了一个可接受值的列表或范围(经由屏幕表格说明文件中的INCLUDE
属性指定)。你必须输入一个在接受范围的值。
对4GL程序,该错误由-1301代替。

-1104 两次输入不一致 -- 请再试一次。

为了避免打字错误,这个显示字段指定了VERIFY属性(在表格说明文件中)。这个显
示字段的值必须同样地被输入两次。另外,你可以用中断键取消表格的输入(通常使
用CTRL-C,但这依赖于程序作者所提供的操作指令)。

对4GL程序,这个错误由-1302代替。

论坛徽章:
0
6 [报告]
发表于 2005-05-20 14:53 |只看该作者

贴个Informix错误代码中文解释供大家参考

-1105 由于图形的存在,你不能使用这个编辑功能。

这个显示字段定义时(在表格说明文件中)使用了PICTURE属性来指定它的格式。在
你编辑这类显示字段时,你不能使用某些编辑键(例如,CTRL-A, CTRL-D, 和
CTRL-X)。只能用可打印字符和退格键输入值。

对4GL程序,这个错误由-1303代替。

-1106 显示字段出错。

你在该显示字段中输入的值不能被指定来接收它的程序变量保存。例如,你可能在应
用程序只提供整数变量时输入了一个十进制数;或你输入了比应用程序所期望的要长
的字符串。记下所有的细节情况,并与该应用程序作者讨论这一问题。

对4GL程序,这个错误由-1304代替。

-1107 显示字段下标越界。

在INPUT,DISPLAY或CONSTRUCT语句中的屏幕数组下标小于1或大于数组中的显示
字段数目。结合屏幕表格说明,检查程序源文件找出错误。

-1108 记录不在屏幕表格中。

在INPUT ARRAY或DISPLAY ARRAY中指定的屏幕记录在当前显示的屏幕表格中没有出
现。结合屏幕表格说明,检查源文件看它是否与屏幕记录名称匹配。

-1109 列表与记录显示字段数目不相符合。

程序变量的个数与在CONSTRUCT,INPUT,INPUT ARRAY,DISPLAY,或DISPLAY
ARRAY语句中的屏幕显示字段数目不相符合。结合表格说明检查语句,察看错误的
所在。通常问题有:一个屏幕记录定义的改变没有反映到每一个使用了该记录的
语句中,一个程序记录的改变没有反映到该屏幕表格的设计中。

-1110 找不到屏幕表格文件。

OPEN FORM 中指定的屏幕表格文件没有找到。检查该语句的"form-file"参数。它不能
包含该文件的后缀.frm。然而,如果屏幕表格文件不在当前的目录中,它应该包含文
件的全路径。

-1111 显示字段表偏移越界。

这是一个内部错误。如果该错误发生,请记下所有细节情况,并与Informix技术支持
部门联系。

-1112 屏幕表格与当前的4GL版本不兼容。重建你的屏幕表格。

OPEN FORM语句中指定的屏幕表格不被接受。它可能是由于某些原因被破坏,也有可能
仅是由于屏幕表格被编译时使用的表格编译器的版本是与编译该程序所使用的4GL编译
器不兼容。用当前版本的表格编译器重新编译该屏幕表格说明。

-1113 内存分配错误。

一个BYTE或TEXT变量已经在内存中被分配而且已有一个值被赋给该变量。然而,没有
足够的数据内存用来保持该变量。检查程序并把大的值放入文件中保存。
对4GL程序,该错误由-1319代替。

-1114 没有屏幕表格被显示。

当前语句需要用到屏幕表格。例如,DISPLAY...TO或一个INPUT语句必须用到一个屏幕
表格的显示字段。然而,从当前窗口被打开后没有DISPLAY FORM 语句被执行。检查程
序逻辑结构确定在试图使用一个屏幕表格前已打开了它并且显示了它。

-1115 对该显示字段,数字值太长

在一个屏幕表格显示字段中,4GL试图使数字值的显示规范化并且对该显示字段而言结
果串太长。检查程序,找出被赋值的数值有多大。

对在4GL/GX下由版本5.0或更高的版本下编译的4GL程序,这个错误不可能出现。

-1116 屏幕表格显示字段的缺省值不能转换至输入变量类型。

这个语句从屏幕表格的一个显示字段得到输入,该显示字段的缺省值(在屏幕表格中
用ATTRIBUTES的关键字DEFAULT指定)与接受它的程序变量数据类型不兼容。检查
这个语句中指定的程序变量并把它们与显示字段的定义相比较。确保每个变量与相应
的显示字段一致,有兼容的数据类型。

-1117 日期值不能转换成串值。

这个信息被认为在现在的任何产品中都不会出现。如果该错出现,请记下所有细节并
与Informix 技术支持部门联系。

-1119 在屏幕表格中没发现NEXT FIELD中指定的显示字段名。

这个语句(INPUT或INPUT ARRAY)包含了一个NEXT FIELD子句,子句所指定的显示字
段在屏幕表格中未定义。也许屏幕表格已被改变而程序没有。参阅错误-1102的解释。
对4GL程序,这个错误由-1371代替。

-1120 没发现信息文件。

最近执行的OPTIONS语句HELP FILE子句中指定的信息文件不存在。在程序中找到该
OPTIONS语句,检查<帮助文件>;的参数。它必须包含所准备的信息文件的全名,并且,
如果文件不在当前目录中,它必须有完整的路径名。信息文件要使用mkmessage工具准
备好。

对4GL程序,这个错误由-1227代替。

-1121 信息文件中没有该信息号。

在当前信息文件中,找不到由INPUT,PROMPT或MENU语句中HELP子句给出的信息号。这
个信息文件是由最近执行的OPTIONS HELP FILE语句建立的。在程序中找到该语句,检
查该信息文件是否为所需文件。然后,检查信息文件来源,确认它包含了程序中用到
的所有信息号的定义。用mkmessage工具重新编译信息文件再重新运行该程序。

对4GL程序,这个错误由-1228代替。

-1122 不兼容的信息文件。

最近执行的OPTIONS HELP FILE语句中指定的信息文件不被接受。可能有几种原因导致
它被破坏。有可能是指定信息源文件的OPTIONS 语句出错而不是编译过的信息文件
(mkmessage 的结果)。可能是文件使用了过时的mkmessage工具版本进行编译。
重新用当前版本的工具编译信息;并检查程序源文件以确保指定了一个正确的文件。

对4GL程序,这个错误被-1229代替。

-1123 没有指定帮助文件。

这个INPUT,PROMPT,或MENU语句包含了一个HELP help_number子句;然而没有建立相
应的信息文件。信息文件由OPTIONS HELP FILE语句建立;但此时并未有一条这种语句
被执行。检查程序并修改使得在需要帮助文件之前已经执行了带HELP FILE子句的
OPTIONS语句。

对4GL程序,这个错误由-1343代替。

-1124 这个显示字段需要输入值。

游标在被指定REQUIRED属性的表格显示字段中。在游标移到另一个显示字段之前,你
必须输入值。然而,你可以通过输入任何可印刷字符然后退格从而输入空值。另外,
你能用中断键取消表格输入(通常是CTRL-C,但取决于程序作者提供的操作指令)。

对4GL程序,这个错误由-1305代替。

-1125 为检验请再输入一次。

游标在一个被指定VERRIFY属性的屏幕表格显示字段中。在游标能移至另一显示字段之
前,你必须两次输入同一值。这是帮助确定在数据输入的过程中没有打字错误。另一
方面,你可以用中断键取消表格输入(通常是CTRL-C,但取决于程序作者提供的操作
指令)。

对于 4GL 程序,这个错误由-1306代替。

-1126 不能插入另一行 - 输入数组已满。

你正在往一个记录数组中输入数据,这个数组在程序中由一组程序变量说明。现在这
个数组满了;已没有空间存储另一个记录。按下ACCEPT功能键(通常是ESCAPE键,但
取决于程序作者提供的操作指令)处理你已输入的记录。

对 4GL 程序,这个错误由-1307代替。

-1127 不能删除这一行 - 它是一个空行。

在一个空行,按下了删除行的功能键(通常是F2,但取决于程序作者提供的操作指
令)。不能删除任何数据。

对4GL程序,这个错误由-1308代替。

-1128 在你的这个方向上,已没有更多的行。

你试图越界滚动一组记录;或是在记录组顶端向上滚或在记录组底部往下滚。更进一
步的企图将导致相同的结果,但如果你还是不明白就请往后看。

对于4GL程序,这个错误被-1309代替。

-1129 屏幕表格中没发现BEFORE/AFTER指定的显示字段。

这个语句包含了一个BEFORE FIELD子句或AFTER FIELD子句,子句中指定了一个当前显
示的屏幕表格中没有定义的显示字段。检查程序,确认正确的屏幕表格被显示;然后
再对照这个屏幕表格的说明检查该语句,确认指定的显示字段都存在。参阅信息-1102
中关于显示字段名的解释。

-1130 同一显示字段不能有多个BEFORE子句。

这个语句包含了至少两个对应同一名称的表格显示字段的BEFORE FIELD子句。仅能支
持一个。找出所有与同一显示字段相关的BEFORE FIELD子句然后把它们合并成一个子
句。

-1131 同一显示字段不能有多个AFTER子句。

这个语句包含了至少两个对应同一名称的表格显示字段的AFTER FIELD子句。仅能支
持一个。找出所有与同一显示字段相关的AFTER FIELD子句,然后把它们合并成一个
子句。

-1132 CONSTRUCT语句的目标串长度不够。

CONSTRUCT语句的结果是一个包含了用户输入的所有条件的字符串。在屏幕表格中,这
个串适合用于SELECT语句中的WHERE子句。在这个CONSTRUCT语句中,结果串比用来接
收它的程序变量要长。作为一个一般规则,变量的长度必须有足够的空间装下用于这
个语句的所有屏幕显示字段的名称,加上显示字段的内容,加上标点符号和关系符。
检查这个语句,并且相应地修改接收变量的定义。

-1133 菜单中不含NEXT OPTION 所指定的选项名。

这个MENU语句所包含的一个NEXT OPTION 子句指定的某个菜单选项在语句中没有定
义。跟在NEXT OPTION后的串必须与同一MENU语句中跟在COMMAND子句后的一个串相
同。检查语句,确认这些子句彼此一致。

-1134 没有对应该功能键的termcap格式。

这个OPTIONS语句的某子句指定的键在termcap文件(或者如果使用的是terminfo
文件,则在terminfo文件)中没有定义。检查子句HELP KEY,INSERT KEY,
NEXT KEY,PREVIOUS KEY和DELETE KEY。比较所指定的功能键与当前使用的termcap
文件中键的定义。

-1135 DISPLAY AT中的行号或列号超出了你的终端的限制。

检查DISPLAY...AT 语句。在DISPLAY AT中的行或列号超出了终端的限制。确认行列位
置是以正确顺序给出(先行后列)并且它们相对当前终端或窗口是有意义的。UNIX 系
统下,在程序开始执行时,通过读入termcap信息(或terminfo信息,这依赖于
INFOMIXTERM环境变量的值)确定终端的大小.这样一个屏幕的大小对某些用户是正确
的,但对另一些却可能根本就不对。在DOS系统下,窗口的大小总是24x80。

-1136 窗口太大,在屏幕上显示不下。

由这个OPEN WINDOW 语句中WITH子句指定的窗口大小与屏幕的大小发生了冲突。完整
的窗口不能被显示,所以语句不能被执行。如果用了WITH子句指定窗口大小,那你可
以用小一些的窗口;如果是在屏幕表格中指定,窗口大小由SCREEN
语句在表格说明文件中指定。另一方面,你可以通过在AT子句中改变位置坐标使窗口
可以显示在屏幕上。UNIX 系统下,在程序开始执行时,通过读入termcap信息(或
terminfo信息,这依赖于INFOMIXTERM环境变量的值)确定终端的大小。这样一个
屏幕的大小对某些用户是正确的,但对另一些却可能根本就不对。在DOS
系统下,窗口的大小总是24x80。

-1137 不能打开窗口。

问题的原因是数据内存不够。修改程序,使并发的打开的窗口数减少,或使用更少的
全局变量。

-1138 窗口的边不能显示在屏幕上,窗口太大。

用OPEN WINDOW说明的窗口不能打开,因为它的边不能显示在屏幕上。不管信息怎么
说,窗口不一定要比屏幕要更大一些。只是它的一条或更多的边(上,下,左或右)
不能在屏幕上画出来。窗口的位置在OPEN WINDOW语句中设定;确信它的始点不高于
第二行也不左于第二列(或取消BORDER属性)。窗口的大小也由OPEN WINDOW语句
设定或由它指定的屏幕表格设定。

UNIX 系统中,在程序开始执行时,通过读入TERMCAP信息(或TERMINFO信息,这依赖
于INFOMIXTERM环境变量的值)确定终端的大小.如果TERMCAP格式包含
sg#1 (terminfo: xmc#1),4GL在窗口的左右两边各保留一多余的列。在DOS系统下,
窗口的大小总是24x80。

-1139 FORM LINE不能使用LAST关键字设置。

这个OPTION 语句包含了使用了LAST的FORM LINE 子句。这是不允许的;你可以指定一
根绝对的表格线或一根相对于FIRST的表格线,但是不能指定相对于LAST
的表格线。

-1140 NEXT OPTION 是一个隐藏的选项。

在这个NEXT OPTION语句中指定的选项已经使用HIDDEN OPTION语句给隐藏了起来。既
然它对用户是不可见的,它不能被作为下一个选择被高亮显示。

-1141 不能关闭有作用的INPUT语句,DISPLAY ARRAY语句或MENU语句的
窗口。

CLOSE WINDOW 语句不能被执行,因为在该窗口中仍然有一个输入操作在起作用。
CLOSEWINDOW语句必须包含在输入语句自身中或在输入语句自身中调用。重新检查程
序,修改程序使得在关闭窗口之前,输入语句已经完成。

-1142 窗口太小,显示不下这个屏幕表格。

窗口大小太小了,以至于不能包含要显示的屏幕表格。重新检查窗口大小并把它与所
有要在窗口中显示的屏幕表格比较。屏幕表格的大小是在屏幕表格说明文件中用
SCREEN语句说明。窗口大小的设定在OPEN WINDOW 语句中,不管是直接打开的窗口还
是随一特定屏幕表格打开的窗口。

-1143 窗口已经打开。

OPEN WINDOW 语句中指明的窗口已经打开了。重新检查程序逻辑,看看是应该包含一
个CLOSE WINDOW 语句还是简单地使用CURRENT WINDOW 语句使打开的窗口出现在屏幕
上就可以了。

-1144 不能打开窗口。窗口的坐标原点不在屏幕上。

OPEN WINDOW 语句中AT子句给出的行列位置指到了屏幕之外。这个语句不能执行。重
新检查这个程序,确认行列值是以正确的顺序给出(先行后列)。程序开始执行时,
通过读入termcap信息(或terminfo信息,这依赖于INFOMIXTERM环境变量的值)确定
终端的大小,所以一个窗口的坐标对某些用户是正确的,但对另一些却可能根本就不
对。

-1145 不能打开ERROR窗口。

4GL试图打开一个单行,80列的窗口以显示错误信息,但不能成功。可能的原因包括内
存不够或内部错误。

对4GL程序,这个错误由-1319代替。

-1146 PROMPT的信息太长,在窗口中显示不下。

尽管4GL将截断MESSAGE及COMMENT的输出以使用窗口大小,但它对PTOMPT
和用户的响应却不会这样做。缩短提示的长度或扩大窗口。使用DISPLAY你能显示大部
分提示正文,然后显示单个空格或冒号。

-1147 不能对未打开的窗口进行CLOSE,CLEAR或CURRENT操作。

CLOSE WINDOW, CLEAR WINDOW,或 CURRENT WINDOW语句中使用的窗口尚未打开或已经
关闭。检查程序逻辑结构,除非确信已打开窗口,否则不引用它。

-1148 窗口大小不能为负数。

OPEN WINDOW 语句的AT子句使用了负数。行和列的大小都必须是正整数。改正这个语
句。

-1149 在屏幕表格中侦测到未知代码。

当前显示的屏幕表格在一些情况下不被接受。有可能它被破坏;有可能它是被过时的
form4gl所编译。重新编译这个屏幕表格。如果问题再次发生,请记下所有的细节,再
与Informix 技术支持部门联系。

-1150 窗口太小,显示不下这个菜单。

结合MENU语句,检查当前窗口的OPEN WINDOW语句。窗口应至少有两行高,并且它必须
足够宽以显示菜单标题,最长的选项名,两组三点的省略号,和六个空格。修改程序
使得窗口足够大到可以显示短一些的菜单名以及短一些的菜单选项。

-1151 INFORMIX-4GL 运行时间设备。

这个信息在当前所有产品中被认为不太可能出现。如果出现这个错误,请记下所有的
细节状况,然后与INFORMIX 技术支持部门联系。

-1152 输入一个指定范围内的值。

这是信息 -1103/-1301的另一版本,是由INFORMIX-4GL/RF在非常小的屏幕的手持式终
端上使用的。见信息-1103。

-1153 检验不合法。

这是信息 -1104/-1302的另一版本,是由INFORMIX-4GL/RF在非常小的屏幕的手持式终
端上使用的。见信息-1104。

-1154 不能使用编辑键。

这是信息 -1105/-1303的一个版本,是由INFORMIX-4GL/RF在非常小的屏幕的手持式终
端上使用的。见信息-1105

-1155 在显示字段中输入值。

这是信息 -1124/-1305的另一版本,是由INFORMIX-4GL/RF在非常小的屏幕的手持式终
端上使用的。见信息-1124。

-1156 再次输入值。

这是信息 -1125/-1306的另一版本,是由INFORMIX-4GL/RF在非常小的屏幕的手持式终
端上使用的。见信息-1125。

-1157 没有更多的行。

这是信息 -1127/-1309的另一版本,是由INFORMIX-4GL/RF在非常小的屏幕的手持式终
端上使用的。见信息-1127。

-1158 FMP 运行内存不够。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1159 并发的INPUT语句数超出了FMP 的限制。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1160 并发的DISPLAY ARRAY 语句数超出了FMP的限制。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1161 FMP当前不在一个INPUT语句中间。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1162 并发打开的屏幕表格数目超出了FMP的限制。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1163 FMP版本号与4GL程序不兼容。重新连接4GL程序并且再运行。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1164 在当前的输入语句中,屏幕表格指令部分指定的NEXT FIELD没有被使用。

当前屏幕表格显示字段有NEXT FIELD的说明(在屏幕表格的INSTRUCTION部分中指
定)。然而,指定的下一个显示字段没有在当前的INPUT语句中指明,故游标不能移
到那一个显示字段。

-1165 FMP不允许用这个语句。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1166 FMP 收到一段非法代码。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1167 FMP收到一个未知的屏幕表格名称。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1168 菜单中没有这一命令。

SHOW OPTION,HIDE OPTION或NEXT OPTION 语句不能引用不存在的选项(命令)。
检查选项名的拼写。

-1170 你的终端类型系统不支持。

检查你的TERM环境变量以及TERMCAP或TERMINFO环境变量的设置。如果你需要这方面的
帮助,通知系统管理员。

-1171 FMP遇到一个不被允许的数据类型。

"FMP"意思是指 INFORMIX-4GL/RF。详见你的系统安装手册。

-1176 同样的COMMAND KEY 值在当前菜单的另一处出现。

在指定的MENU语句中,定义了一个在多个COMMAND KEY键表中出现的键值;或该键值既
在COMMAND KEY键表中出现,同时又是一个或几个非隐藏COMMAND
子句的缺省激活键(例如,这个键值也是一个或几个菜单选项字串的首字符)。这种
情况是非法的,因为给定的键敲入后,菜单没办法知道该做哪件事。

因为在得到唯一的字串前,程序将提示用户输入后续字符,所以某个特定的键可以作
为多个COMMAND(没有KEY子句)的缺省激活键。但这在COMMAND KEY中却不
可以,因为只比较一个敲入的键。

如果一个COMMAND当前是隐藏的(使用HIDE OPTION关键字),那么它的激活键被忽
略,从而不会触发这个错误条件。

-1200 对于DECIMAL数据类型,数值太大了。

DECIMAL 数据类型数值的绝对值范围在 10-130 到 10124 之间。精度(有效位数)在
1到32之间变化;但是这个错误的原因不在于数值的长度而是它的量级。

-1201 对于DECIMAL数据类型,值太小了。

DECIMAL 数据类型数值的绝对值范围在 10-130 到 10124 之间。精度(有效位数)在
1到32之间变化;但是这个错误的原因不在于数值的长度而是它的量级。

-1202 试图作除以0的运算。

一个除数不能为0。在一些情况下,出现这个错误是因为除数是一个字符值而没有恰当
地转换为数值。

-1203 用于MATCH的值必须都是CHARACTER类型。

MATCHES 关系仅能应用于字符数据;它的操作项必须是CHAR或VARCHAR类型的字段或变
量,或文字字符串。如果你需要进行正规模式与一个数字值的匹配,那么你可以在4GL
中通过把数字值赋值给一个CHAR变量从而进行比较。

-1204 日期中的无效年份。

DATE值或文字中的年份必须由二或四位数字给出;即从 00 到 99 或 0001到 9999。数
0000 和其它数字值是都不被接受的。

-1205 日期中的无效月份。

DATE值或文字中的月份必须是 1 到 12之 间的一位或二位数字。

-1206 日期中的无效日值。

DATE值或文字中的日值必须是从 1 到 28,30或31之间(取决于所给的月份)的,并且
以一位或两位数的形式给出。

-1207 被转换值不能放入分配的空间。

一个非字符值在转换成字符串后过长以致不能放进提供的缓冲区。若转换是自动的,
修改程序以提供更大的主机变量来接受串。若是显式调用转换函数,传递更大的缓冲
区。

-1208 没有从非字符值到字符值的转换。

如果你在用版本4.0以前的数据库服务器,在 INSERT 和UPDATE等SQL语句中,没有从
数值到字符的自动转换。确认指定给每一字段的值符合该字段的数据类型。若使用版
本4.0或更高的数据库服务器,不会出现此信息。

-1209 没有定界符,日期必须恰好包含 6 或 8 个数字。

当一个文字日期值被用数值形式输入,而不是包含在引号中作为字符串时,必须准确
地用 6 位数字(代表mmddyy)或 8 位数字(代表mmddyyyy)输入。由于没有标点,任何
含其它数量数字的日期是二义的;它不能被确凿地分成月,日,年。

-1210 日期不能被转换为 月/日/年 格式。

DATE类型和INTEGER类型是兼容的,但不是所有整数都是有效的日期。当试图将数值小
于 -693,594 或大于 2,958,464的日期转换为字符时,将产生此错误。超出此范围的
数值不表示日期。

-1211 内存不足。

4GL不能分配一块小的,临时的内存以处理一个表达式。尽量简化程序来释放足够多的
内存,从而避免此错误。

-1212 数据转换格式必须包含月,日,年元件。

当一数值在内部二进制格式和显示或输入格式间被转换时,转换由模式指引。当转换
自动进行时,模式来自DBDATE环境变量。当转换是通过显式调用rfmtdate(),
rdefmtdate(),或USING函数进行时,模式串作为参数被传递。在任何情况中,模式串(
信息的"格式"必须包括指示日期的三部分的字母:2或3个字母d; 2或3个字母m;2或4个
字母y。

-1213 字符到数值的转换失败。

一个字符被转换为数值形式来存储进数值字段或变量中。然而,字符串不能被解释为
数值:它包含了除空格,数字,符号,小数点,字母e之外的字符; 或有顺序错误,因
此不能被解释。

如果你使用NLS,那么十进制字符或千分符可能在本地环境下出错。

-1214 值过大,不能放进一个SMALLINT。

SMALLINT数据类型能接受绝对值从 0 到 32,767 (±215-1)的数值。若要存储超过此
范围的数,字段或变量必须重定义为INTEGER或DECIMAL类型。(-32,767是16
位的值,但不被接受;在4GL中,它被用来指示一个null值。)

-1215 值过大,不能放进一个INTEGER。

INTEGER数据类型能接受绝对值从 0 到 2,147,483,647 (±231-1)的数值。若要存储
超过此范围的数,字段或变量必须重定义为DECIMAL类型。(-2,147,483,648
是32位的值,但不被接受;在4GL中,它被用来指示一个null值。)

-1216 不合法的指数。

一个数值文字的指数不能超越 32,767。事实上,可供使用的数据类型中,都不能接纳
这么大的指数的;然而,在检查数值的目的之前,指数本身触发了此信息。检查语句是
否遗漏或错放了标点,那将导致两个数被连在一起。

-1217 格式串过大。

被用来格式化一个日期(或是DBDATE环境变量,或是传递到rfmtdate()或USING功能的
模式)的模式串过长。限制是80字节。

-1218 串到日期转换错误。

函数 rstrdate() 的输入未正确表示一个日期:或者在应是数字处有非数字,或有非期
望的定界符,或者数值过大或不一致。

-1219 来自数据库的数值对COBOL数据项来说过大。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境并与
Informix技术支持部门联系。

-1220 来自数据库的数值对COBOL数据项来说过小。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境并与
Informix技术支持部门联系。

-1221 不能转换null数据类型。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境并与
Informix技术支持部门联系。

-1222 值不能用SMALLFLOAT表达。

SMALLFLOAT数据类型能接受一定指数范围内的数值。最大和最小指数值依主机操作系
统不同而不同(取值范围与主机系统中 C 编译程序支持的 float 值范围一样)。在当
前语句中,一常数数值被转换存储进FLOAT变量或字段中,但指数过大或过小。

-1223 值不能用FLOAT表达。

FLOAT数据类型能接受一定指数范围的数值。最大和最小指数值依主机操作系统不同
而不同(取值范围与主机系统中 C 编译程序支持的 double 值范围一样)。在当前语
句中,一常数数值被转换存储到FLOAT变量或字段中,但指数过大或过小。

-1224 非法的十进制数。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境与
Informix技术支持部门联系。

-1225 字段不接受NULL值。

此语句试图存储null值到已被定义为不允许null的字段。检查表的定义,修改语句,
使它提供值给所有需要的字段。

-1226 十进制或money值超出了最大精度。

4GL试图转换一个字符格式的数值为DECIMAL或MONEY变量。然而,此数值小数点左边的
数字多于变量说明允许的位数。修改程序,分配被转换数值给具有更高精度的变量。

-1227 没找到信息文件。

4GL找不到一信息文本文件。此文件有.iem后缀且存放在产品目录$INFORMIXDIR/msg
中。重新安装这些文件。若你已修改了用户信息文件4glusr.msg,确认它的编译后的
版本已被放在当前目录下。

-1228 在信息文件中没有找到信息号。

4GL不能在与产品一起安装的信息文件中找到相应的信息号。重新安装所有.iem
类型文件。若你已修改文件4glusr.msg的内容,检查你所有可能的删除,并且重新编
译此文件。

-1229 不兼容的信息文件。

4GL试图在信息文件中查找一信息文本,文件中有和产品的当前版本不匹配的内容。可
能文件是损坏的;可能找到的是以前的版本信息文件。文件有后缀.iem且存放在
INFORMIXDIR环境变量指定的路径的 etc 子目录中。重新安装这些文件。如果你已修
改用户信息文件4glusr.msg,一定要用当前版本的mkmessage 工具重新编译它。

-1230 错误的信息文件名格式。

提供给信息文件的文件名是非法的,此信息文件要用来象本书这样显示错误信息,故
它无法被打开。检查DBLANG环境变量的值,如果它被指定了的话。

-1231 不能在信息文件中查找。

应用程序试图在一信息文件中查找一信息文本,当试图在文件中定位时收到一错误代
码。这说明文件本身有问题;可能文件已被损坏或截断。重新安装所有的.iem
类型文件。如果你已修改了用户信息文件4glusr.msg,要重新编译它。

-1232 信息缓冲区太小。

4GL在从一编译过的信息文件中读取信息文本,但不能调整缓冲区大小来容纳完整的信
息。这可能说明数据空间的危急短缺,更可能是表明信息文件被毁或者非法。重新安
装所有.iem类型的文件。如果你已修改了用户信息文件4glusr.msg,你需要重新编译
它。

-1233 无效的时,分,秒。

在当前任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境与
Informix技术支持部门联系。

-1234 函数只可用于datetime数据类型。

在当前任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境与
Informix技术支持部门联系。

-1235 字符主机变量相对数据太短。

在一个 ESQL/C 程序中,程序试图取得一个字段值放进一个不够大的主机变量中。可
用DESCRIBE命令得到字段值的大小。

如果这个错误出现在4GL程序中,请记下所有环境后与Informix技术支持部门联系。

-1236 错误的日期纪元

输入串中给定的纪元名或纪元偏移的是非法的或没有以要求的格式输入。检查输入串
中的纪元名和偏移是否合法,次序是否适当。检查输入串格式对于DBTIME型值,
DBDATE型值或传递到SQL API函数的格式化串是否合适。

-1237 错误的纪元名

日期格式要求一个纪元名,但在输入串中却未找到与GLS局部环境设置中的纪元名
相对应的名字。检查是否使用了正确的局部环境设置以及输入了正确的纪元名。

-1238 错误的纪元初始化

这是一个内部错误,请通知Informix技术支持部门。

-1239 纪元年号溢出

给出的纪元偏移不在纪元所指定的范围。检查纪元偏移是否在纪元指定的合法范围
中。

-1250 不能建立管道。

应用程序使用操作系统的管道功能初始化它与数据库服务器的通讯时,操作系统返回
了非期望的错误代码。查阅操作系统错误信息可以得到更多的细节。

-1251 不能建立共享内存。semget失败。

在服务器用共享内存进行通讯的版本中,应用程序在初始化与服务器的通讯时,调用
操作系统函数semget发生了非期望的错误。查阅操作系统错误信息可以得到更多的细
节。请向安装Informix 共享内存产品的人咨询。

-1252 不能建立共享内存。shmget失败。

在使用共享内存进行通讯的服务器的版本中,应用程序在初始化与服务器的通讯时,
调用操作系统函数shmget发生了非期望的错误。查阅操作系统错误信息可以得到更多
的细节。请向安装Informix 共享内存产品的人咨询。

-1254 不能与远程主机连接。

程序试图打开一个由另一个系统中的数据库服务器管理的数据库,但不能打开与另一
个系统的网络连接。检查DATABASE或CREATE DATABASE语句中指定的节点名。如果那是
你想要的,寻找来自网络元件或操作系统的错误信息。与另一系统的操作者联系,验
证它是活动的且接受网络连接。

-1257 操作系统不能为后端产生分支进程。

"后端"是指数据库服务器。这是一个内部错误。寻找操作系统信息将给出更多信息。
在DOS系统中,你可能是内存不足;退回到操作系统命令行,并再次提交你的程序。若
验证了这不是系统极限的后果或本地问题,请记下所有环境并与Informix技术支持部
门联系。

-1258 不能连上用来与后端通信的共享内存。

"后端"是指数据库服务器。这是一个内部错误。寻找操作系统信息将给出更多信息。
若验证了这不是系统极限的后果或本地问题,请记下所有环境并与Informix
技术支持部门联系。

-1260 在指定的类型间转换是不可能的。

系统将尝试任何有意义的数据转换。然而,有一些转换是不支持的,如INTERVAL
到DATE,DATETIME到MONEY。你可能涉及了错误的变量或字段。确认你已指定了你所要
的数据类型,且数据值的文字的格式正确。

-1261 datetime或INTERVAL的第一个显示字段中数字太多。

一个DATETIME文字的第一个显示字段必须包含1或2个数字(如果它不是YEAR),或者2或
4个数字(如果它是YEAR)。一个INTERVAL文字的第一个显示字段代表单元的个数,且最
多可有9位数字,这依赖它的限定符中指定的精度。请检查此语句中的DATETIME和
INTERVAL文字并且改正。

-1262 非数值字符出现在datetime或INTERVAL中。

DATETIME或INTERVAL文字的格式是很严格的。只能包含十进制数字和允许的分界符:在
年,月,日间的连字符;在日和时间的空格;在时,分,秒间的冒号,和在秒和分数间
的小数点。任何其它字符,或这些字符的次序错误,都被检测为错误。

-1263 datetime或INTERVAL中的显示字段超出了范围或是非法的。

检查此语句中的DATETIME和INTERVAL文字;至少其中一个包含了至少一个非法的显示
字段。在一个DATETIME文字中,年可能是零;月可能不在1-12内;日可能不在1-31
内或与月冲突;小时可能不在0-23内;分或秒可能不在0-59内;或相对指定的精度,分数
的数字太多。

在一个INTERVAL文字中,除了第一个显示字段是一个计数且可有限定符指定的个数的
数字之外,约束是同样的。

-1264 在datetime或INTERVAL尾部的额外字符。

除了空格,DATETIME或INTERVAL文字值之后不能有任何字符。检查此语句是否有
遗漏或非法的标点。

-1265 datetime或INTERVAL运算溢出。

DATETIME和INTERVAL值在内部都存储为DECIMAL值。在此语句中,一个使用DATETIME
或INTERVAL值的算术运算导致了溢出。这是不应发生的。检查为INTERVAL值指定的精
度。如果你想输入的INTERVAL值超过了显示字段允许的数字数,你必须在定义中明确
标识有效数字位数。如果错误重复发生,请记下所有环境并与Informix技术支持部门
联系。

-1266 INTERVAL或datetime对运算不兼容。

有些DATETIME,INTERVAL和数值的算术组合是无意义和不允许的。请检查语句中的数
学表达式。可能其中之一错误地使用了DATETIME或INTERVAL字段或变量。如果没有,
查看你的SQL参考资料中这些数据类型的正确用法。

-1267 一个datetime的计算结果越界。

在此语句中,一个DATETIME计算产生了不能被存储的值。例如,如果一个很大的
INTERVAL加到DATETIME上,就会发生这种情况。请检查语句中的表达式,看是否可以
改变运算顺序来避免溢出。

-1268 无效的datetime或INTERVAL限定符。

此语句包含了一个不可接受的DATETIME或INTERVAL限定符。这些限定符只可是YEAR,
MONTH,DAY,HOUR,MINUTE,SECOND,FRACTION和TO。FRACTION后的圆括号中可以是
一个1到5之间的数。检查语句中遗漏的标点和错放的词。一个常见的错误是多加了
个s,如MINUTES,这是非法的。

-1269 定位器转换错误。

此信息的产生是因为一个要求定位器参数(BYTE或TEXT值的引用)的函数接收的不是一
个有效的定位器(如一个NULL参数)。检查程序逻辑,确认参数是正确的。如果错误再
次发生,请记下所有环境并与Informix技术支持部门联系。

-1270 INTERVAL文字值不能有嵌入的负号。

你可以在一个INTERVAL文字和其它值之间使用负号作为算术运算符,或用负号作为一
个INTERVAL文字的前缀来说明它是负的量。然而你不能在文字之中嵌入负号。如果你
没有这样作,检查语句是否遗漏或错放标点。

-1271 在datetime或INTERVAL分数中遗漏了小数点。

当DATETIME或者INTERVAL文字值的限定符中包含FRACTION一词时,此文字值应该有一
个小数点。此语句中有这样一个文字值但缺少小数点。检查文字的限定符并寻找遗漏
或错放的标点。

-1272 没指定输入缓冲区。

你没有为此函数指定一个输入串,所以转换不能进行。设置输入串参数,再调用函
数。(此函数可能要求用DBTIME环境变量定义格式指令。)

-1273 输出缓冲区为NULL或太小不能保持结果。

当函数被调用并且输出缓冲区的地址空间为null或小于格式串长度时,发生此错误。
重定义地址大小并执行函数。(此函数可能要求用DBTIME环境变量定义格式指令。)

-1274 没指定输出缓冲区。

当输出缓冲区的长度为零或缓冲区指针为null时,发生此错误。版本5.01之后的数据
库服务器不采用此错误信息。

-1275 在DATETIME或INTERVAL格式串中显示字段的宽度或精度无效。

在DATETIME或INTERVAL格式说明中的显示字段的宽度或精度必须是有意义的。显示字
段宽度必须是一个十进制数,带前导零或负号(-)。如果有精度说明,也必须是十进制
数,且用点(.)与显示字段的宽度说明分开。

-1276 格式转换字符不被支持。

格式串中的格式转换字符不是有效的。对照你的嵌入语言的产品手册中关于DATETIME
和INTERVAL格式转换函数的格式转换指令表检查串。可以参看 "Informix SQL指南:参
考手册" 第四章中关于DBTIME环境变量的详述。

-1277 输入与格式说明不匹配。

确认包含DATETIME或INTERVAL值的ASCII串与格式串一致。例如,在DATETIME或
INTERVAL ASCII串中的一个百分号字符(),在格式串中必须有一个匹配序列"%%"。可
以参看 "Informix SQL指南:参考手册" 第四章中关于DBTIME环境变量的详述。

-1278 无效的转义顺序。

检查语句的LIKE或MATCHES子句中指定的模式匹配串。在ANSI数据库中,可以有效转义
的字符只有: LIKE子句的%,_和转义字符,MATHES子句的*,?,[,]和转义字符。

-1279 值超过了字符串字段的长度

这条信息仅出现在ANSI数据库中。试图将一个字符串主变量插入到一个CHAR,NCHAR,
VARCHAR,或NVARCHAR字段中,但字符串太长了。

-1280 libgen.so与Library API不兼容。

和你的客户应用程序一起编译的libgen.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libgen.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1281 libos.so与Library API不兼容。

和你的客户应用程序一起编译的libos.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libos.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1282 libsql.so与Library API不兼容。

和你的客户应用程序一起编译的libsql.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libsql.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1283 libgls.so与Library API不兼容。

和你的客户应用程序一起编译的libgls.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libgls.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1301 这个值不在有效的可能范围之中。

本字段可接受的值的列表或范围已被建立(由屏幕表格说明中的INCLUDE属性)。你必须
输入一个在可接受范围之内的值。

-1302 两次输入是不同的--请再试一次。

为防止敲键错误,此显示字段已被指定VERIFY(在屏幕表格说明文件中)。此显示字段
的值必须被同样地输入两次。仔细地重输数据。你也可以用中断键取消屏幕表格输入
(通常是CTRL-C,但要看程序作者提供的操作说明)。

-1303 由于存在图片你不能使用这个编辑特性。

此显示字段被(在屏幕表格说明文件中的)PICTURE属性指定了格式。当你编辑这样的显
示字段时,特定的编辑键(例如,CTRL-A,CTRL-D和CTRL-X)是不允许用的。只能用输
入可打印字符和退格输入值。

-1304 显示字段中的错误。

你已经在显示字段中输入一个值,但不能被存储在接收它的程序变量中。例如,你输
入一个十进制数,而应用程序只提供了整型变量;或你可能输入了一个超出应用程序
期望长度的字符串。记下所有环境并且和写应用程序的人讨论这个问题。

-1305 这个显示字段要求一个输入值。

游标在已被指定REQUIRED的屏幕表格显示字段中。在游标能移动到另一显示字段之前
你必须输入值。然而,你可以通过敲入任何可打印字符再退格消去的方法来输入null
值。代替地,你可以用中断键取消屏幕表格输入(通常是CTRL-C,但要看程序作者提供
的操作说明)。

-1306 为了校验请再敲一遍。

游标在已被指定VERIFY的屏幕表格显示字段中。在游标能移动到另一显示字段之前,
你必须输入同样的值两次。这是为了确保在数据输入中没有敲键错误。你也可以用中
断键取消屏幕表格输入(通常是CTRL-C,但要看程序作者提供的操作说明)。

-1307 不能插入另一行,输入数组已满。

你正在输入数据到一个记录数组,此数组在程序中用程序变量数组表示。这个数组现
在是满的;没有地方来存储另一个记录。按ACCEPT键(通常是ESCAPE,但要看程序
作者提供的操作说明)来处理你已输入的记录。

-1308 不能删除行 - 此行没有数据。

你在一空行上按下删除行功能健(通常是F2,但要看程序作者提供的操作说明),没有
任何东西被删除。

-1309 在你进行的方向上没有更多的行。

你在试图在范围外滚动记录数组,或者是在数组顶端向上滚,或者是在数组底端向下
滚。进一步尝试将会是同样的结果,如果那使你高兴就继续吧。

-1310 没有执行一个RETURN语句而结束了当前函数。

当前函数不是返回void类型的,但没有执行RETURN语句就准备退出。

-1312 FORMS语句错误号<号码>;。

这是有关于屏幕表格的问题。在本文档中查找错误号。结合当前的语句对它进行分
析。

-1313 SQL语句错误号<号码>;。

当前语句访问数据库服务器时后者侦测到错误并且返回一个错误代码号。在本文档中
查找号码。也可寻找其它错误信息。

-1314 程序在语句<行号>;行处停止。

在程序的指示点侦测到错误。寻找其它给出本错误细节的错误信息。用本信息中的号
可在程序源文件中定位错误。

-1315 4GL 运行时错误号<号码>;。

因为侦测到错误,程序已经停止。在本文档中查找错误代码号。也寻找其它错误信
息,以得到更多细节。

-1316 ISAM错误号<号码>;。

当前的语句访问数据库服务器,数据库服务器侦测到了错误(可能显示错误 -1313
报告)。这条信息包含关于错误发生的附加信息。可在本文档中查找号码。

-1317 因为在调用程序和它的函数参数之间或变量和它的赋值表达式之间的
不兼容,发生了数值转换错误。


只要不丢失信息,4GL在两种数据类型间自动转换。在当前的语句里,不能这样做。
首先查看函数调用,检查作为参数传递的值。确认传递的值和参数在函数体内定义的
类型相符。(一个错误的实例是调用函数fun("X",而函数的参数定义为整数。)
如果是LET语句,确认在右边计算出的值能被左边命名的变量容纳。

-1318 调用函数和被调用函数的参数个数不匹配。

在调用函数时给的参数太多或太少。调用可能在与被调用的函数不同的源模块中。
检查函数的定义和它被调用的所有点,确认使用参数个数与定义的相同。

-1319 4GL程序已经超出了运行时可用的数据空间内存。

你将不得不减少程序要求的数据空间。检查大字符变量的大小和数组的维数。可能需
要将程序分割成可以分别装入的几个程序。

-1320 函数没有返回调用函数期望的数值的数目。

如果函数作为表达式的一部分被调用,那么它返回多于一个的数值。如果使用CALL语
句调用它,那么RETURN语句(函数中)后表达式的数目不同于RETURNING从句(CALL
语句中)中列出的变量的数目。

确认调用了正确的函数。检查该函数的逻辑,特别是它的返回语句,确认总是返回期
望数目的数值。

-1321 VALIDATE命令的执行结果出现确认错误。

VALIDATE语句对照存储于syscolval表中的规则测试当前变量的值。检测出失配情况。
通常程序使用WHENEVER语句来获取这个错误,显示或修正错误的值。检查VALIDATE语
句,找出正在测试的变量,并找出为什么它们是错误的。

论坛徽章:
0
7 [报告]
发表于 2005-05-20 14:54 |只看该作者

贴个Informix错误代码中文解释供大家参考

-1322 不能打开报表输出文件。

不能打开REPORT TO语句指定的文件。确认你的帐户具有对这样文件的写权限,磁盘未
满,并且你没有超过某些关于可打开文件数目的极限。

-1323 不能打开报表输出管道。

REPORT TO PIPE语句指定的管道不能开始。确认其中命名的所有程序都存在,并在你
的执行路径中是可访问的。还要查看操作系统信息,可能给出更具体的错误信息。

-1324 报表输出文件无法写入。

REPORT TO语句指定的文件已经打开,但写入时出现错误。可能磁盘已满。查看操作系
统信息,可能会给出更多的细节。

-1326 数组变量的引用超过指定的维数范围。

数组下标表达式产生的数值或小于1或大于数组元素的个数。检查直到这条语句的逻
辑,判定错误是如何产生的。

-1327 无法准备插入语句以将数据行插入报表使用的临时表。

在报表函数中,4GL生成SQL语句把数据行保存在临时表中。语句的动态准备(参考
PREPARE语句的参考资料)发生错误。最可能的原因是程序被编译后保持原样,直到运
行时,数据库表格还没有定义;或者数据库已改变或者程序选择了与当前编译不同的
数据库。另外的可能性是数据库管理员已回收你对报表中使用的一个或多个表的
SELECT权限。查看其它错误信息,可能给出更多细节。

-1328 在选定的数据库中,不能创建报表所需的临时表。用户在所定的数据库中必
须具有创建表的权限。

在报表定义中,4GL生成SQL语句将数据行保存在临时表中。但无法创建临时表。最可
能的原因是数据库中没有余下磁盘空间。其它通常的原因是当前数据库存在与临时表
同名的表,报表定义试图创建该临时表作为排序表。排序表被命名为"t_<报表名>;"。
(例如,报表名是"order_rpt",其排序表将命名为"t_order_rpt")因此,建议用户
定义表时避开以"t_"打头的名字。与一些数据库服务器有关的-1328错误另外可能的
原因是,你超过打开文件的操作系统极限。查看其它错误信息,可能会获得更多的
细节。

-1329 无法创建报表所需的临时数据库表的数据库索引。

在报表定义中,4GL生成SQL语句把数据行保存在临时表中。但无法创建该临时表的索
引。最可能的原因是在数据库中存在同名的索引(排序索引被命名为"i_<报表名>;"例
如"i_order_rpt")。另一通常的原因是在文件系统或dbspace中没有磁盘空间可用。
另外,与某些数据库服务器有关的可能性是你已超过打开文件的操作系统极限。查看
其它错误信息,可能获得更多的细节信息。

-1330 往临时报表中插入一行失败。

在报表定义时,4GL产生往临时报表中存入行的SQL语句。然而,当这些行被插入时,
有错误发生。有可能的原因是数据库磁盘空间不够。查阅其它的错误信息,可以得到
更多的细节。

-1331 无法从报表临时表中获取数据行。

在报表定义中,4GL生成SQL语句从临时表中取数据行。已成功地创建了表,但从中检
索数据行时出错。唯一可能的原因是硬件失败,或数据库服务器出错。查看操作系统
信息,以获取更多细节。

-1332 字符变量引用的下标超出范围。

在当前语句中,用于提取字符值子串的变量包含小于1的数,或大于变量大小的数,或
者第一个子串表达式大于第二个。检查直到这条语句的程序逻辑,找出错误的原因。

-1333 串的长度大于512,不能从函数调用中被返回。

当前RETURN语句包含一个表达式,其结果是长于512个字符的字符串。它不被支持。检
查函数的逻辑,并修改它,使之不返回如此长的字符串值。更长字符串可赋予全局变
量。

-1334 4GL程序不能为临时串的处理分配更多的空间。

在一个比4.1版高的环境上编译的程序执行时,不应看到这条出错信息;然而4GL
的4.1版或更早的版本上编译的程序必须处理这个问题。

当求字符串表达式的值时会用到“临时”串的存贮。临时串的存贮分配是从一个固定
大小的缓冲区中通过一个简单算法实现的。在最后一个未解决的字符串表达式完成
前,缓冲区中的空间是不能被利用的。因为大多数表达式结束很快,所以该串缓冲区
通常用起来快,清空也快。

然而当表达式涉及到函数调用时,表达式的求值在函数调用期间搁置起来。在函数调
用返回前,缓冲区不能清空。例如,在下面的语句中: LET charvar=numvar
USING '###', myfunc()
临时空间用于文字串'###'和USING操作符的结果。这些被搁置的值在myfunc()函数调
用期间一直保留在串缓冲区中。如果在myfunc()函数和它的子函数求值期间用到的临
时串值总量超过了缓冲区的大小,就会发生这里的错误。

通过将函数调用分配在几个语句中,通常是可以避免上述错误的,如下面的例子:
LET charvar=myfunc()
LET charvar=numvar USING '###', charvar clipped
在调用第一个语句的函数myfunc()期间,串缓冲区是空闲的,当第二个语句执行完
后,串缓冲区又是空闲的。

CASE语句中WHEN子语句的缩减形式也会产生被搁置的字符表达式。下面例子中,在整
个函数func_A()和func_B()调用期间,临时串存贮空间将不予使用。
CASE charvar
WHEN 'A' CALL func_A()
WHEN 'B' CALL func_B()
...

WHEN子句的完整形式不会产生上述问题,因为字符表达式的求值在函数调用开始时就
结束了。 CASE
  WHEN charvar='A' CALL func_A()
WHEN charvar='B' CALL func_B()

当WORDWRAP子句出现在PRINT语句中时,INFORMIX-4GL的4.1版中的某些版本中的一个
熟悉的错误会引起上述类型的假错误。如果这个错误重复发生,请注意一下所有的环
境并和Informix 技术支持部联系。

-1335 在报表启动之前已进行输出或完成。

程序在执行START REPORT语句之前已执行OUTPUTTO REPORT或FINISH REPORT
语句。检查直到该语句的程序逻辑,找出这个错误的原因。

-1336 pcode文件中的模块<名称>;包含pcode版本<编译版本号>;。这个程序可执行
pcode版本—运行版本。带-V选项运行pcode编译程序来检查它产生的pcode版本,然后
重新编译你程序的所有模块并重新运行它。

程序runner或定制runner必须在与程序编译器同样的软件版本上。首先通过带-V
选项执行每一个程序来确定它们在同一级别。该选项使它们显示它们的版本号。当确
认使用的是兼容的软件,就重新编译你的程序。

-1337 变量<名字>;已重新定义为不同的类型或长度。

所示的变量在GLOBALS节中的两个或多个模块内被定义,但在这些模块中的定义与在其
它模块中的不同。可能模块分别编译,在此期间某些公共的GLOBALS文件发生变化。也
可能变量在某些模块中被说明为模块变量,这些模块不包含GLOBALS文件。

-1338 函数<名字>;没有在程序的任何模块中定义。

程序中至少有一个模块调用命名的函数,但在所有模块中都没有定义。如果你正在使
用程序员环境,可能某个模块没有定义为一个多模块程序的部分。如果你在命令行状
态工作,当程序文件集中形成.4gi文件时,可能忽略了一个或多个已编译的.4go模
块。

-1339 描述符表中没有全局变量名。

这是runner的内部问题。如果错误再出现,请记录所有现场信息,并与Informix
技术支持部门联系。

-1340 没有启动出错日志。

程序调用errorlog( )函数时,没有首先调用startlog( )函数。检查程序的逻辑,找
出这个错误的原因。

-1343 没有指定帮助文件。

INPUT、PROMPT或MENU语句包含带有帮助编号的HELP从句;但没有建立信息文件。该信
息文件由OPTIONS HELP FILE语句建立,但没有执行这样的语句。检查程序的逻辑并修
改它,在需要帮助以前,执行带有HELP FILE从句的OPTIONS语句。

-1344 -INFORMIX-4GL简易运行版.

任何当前的informix产品不显示该信息。

-1345 未定义的操作码.

程序的pcode文件(它的文件后缀是.4go)已经损坏。重新编译整个程序,然后再运行
它。如果出现同样的错误,确认你在同一版本级上运行pcode编译程序和pcode运行程
序。如果错误再出现,请记录所有现场信息,并与Informix技术支持部门联系。

-1346 数值对DECIMAL数据类型来说太大。

DECIMAL数据类型允许绝对值是从10-130到10124。精度(有效数字个数)的变化从1到
32;该错误的原因不是数值的长度而是数值的数量级。

-1347 数值对DECIMAL数据类型来说太小。

DECIMAL数据类型允许绝对值是从10-130到10124。精度(有效数字个数)的变化从1到
32;该错误的原因不是数值的长度而是数值的数量级。

-1348 试图除以零。

分母不能是零。当分母是字符值而且它没有被正确地转换成数值时,也会引起这种错
误。

-1349 字符到数值的转换出错。

为了存储于数值字段或变量,字符值被转换成数值格式。但该字符串无法按数值解
释:它包含除了空格、数字、符号、十进制数或字母e以外的其它字符;或者各部分
的次序不对因此该数值不能被解码。

-1350 不能在指定的类型之间进行转换。

系统试图进行任何有意义的数据转换。但有些不被支持,如INTERVAL到DATE,或
DATETIME到MONEY的转换。你可能引用了错误的变量或字段。确认指定的数据类型无
错,并且数据值的文字表达式格式正确。

-1351 函数(或报表)名已被定义。函数和报表不能有同样的名称。

每个函数(或报表,它与函数类似)在程序内必须拥有唯一的名字。必须修改其中之
一。

-1352 名字不能既作为函数(或报表)名又作为变量名。

所示的名称至少按两种方式定义。名称无论在全局或模块级(函数名、报表名和全局
或模块变量的名称)必须唯一。定位该名称的所有定义,并除了其中之一全部修改它
们。

-1353 使用'!'编辑TEXT和BYTE显示字段。

内部屏幕表格编辑器不能处理TEXT或BYTE字段。但是可以指定一个外部程序,用它显
示或编辑TEXT或BYTE字段的值。为任意的显示字段指定调用外部程序,须把游标放在
该显示字段上,并键入惊叹号(!)字符。如果已定义外部程序(使用屏幕表格说明的
PROGRAM属性),就会启动该程序。如果是TEXT显示字段,且屏幕表格中没有指定
外部程序,则DBEDIT环境变量命名的程序就会启动。

-1355 不能建立临时文件。

已经使用LOCATE语句在临时文件中定位TEXT或BYTE变量。当前语句给该变量赋值,所
以4GL试图建立临时文件,但发生错误。可能磁盘空间不够,或你的帐户没有建立临时
文件的权限。4GL在DBTEMP环境变量中指定的目录上建立临时文件。查看操作系统错误
信息,可能会得到更多的信息。检查DBTEMP的值。从在5.01版本开始,DBTEMP环境变
量被INFORMIX-SE数据库服务器使用,而不是被INFORMIX-
OnLine Dynamic Server使用。

-1356 在临时文件<文件名>;中出现写入错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1357 在临时文件<文件名>;中出现读取错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1358 blob文件<文件名>;出现写入错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1359 blob文件文件名出现读取错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1360 没有这个显示字段的PROGRAM=从句。

当游标位于TEXT或BYTE显示字段时,你按下了惊叹号键(!),但没有外部程序指定到该
显示字段(使用屏幕表格说明文件的PROGRAM属性)。如果这是一个TEXT显示字段,可
在启动该程序前通过设置DBEDIT环境变量指定一个文本编辑器。

-1361 非法的blob文件名。不允许存在空名。

已经使用4GL语句LOCATE在文件中定位了BYTE或TEXT变量。但是变量给出的文件名是空
串。由于文件不存在,4GL不能对其进行任何操作。

-1362 4GL执行堆栈违例。

程序试图存取堆栈界限以外的内容。如果错误再出现,请记录所有现场信息,并与
Informix技术支持部门联系。

-1363 出现致命的内部错误—应用程序中止。

程序试图存取属于该应用程序以外的内存。如果错误再出现,请记录所有现场信息,
并与Informix技术支持部门联系。

-1364 错误恢复安装失败—应用程序中止。

运行机制允许应用程序捕获和处理内部错误,但不能完成其动作。返回DOS,重新启动
Windows。

-1365 应用<应用名称>;没有找到。

应用启动器fglaunch没有找到要求的应用。

-1366 不能装入应用<应用名称>;。

应用起动器fglaunch不能装入要求的应用。DLL没有要求的NewEra入口点,所以一定不
是NewEra DLL。.检查是否NewEra DLL与现存的系统DLL有相同的名字。

-1367 DLL <名称>;不是DLL资源—应用程序中止。

应用起动器fglaunch的程序选项,指定DLL <名称>;包含资源,但没有找到资源。

-1371 当前屏幕表格中不存在field显示字段名。

在NEXT FIELD语句或pf_nxfield( )函数中已经给出指定的显示字段名,但在当前的屏
幕表格中没有定义。常见错误是弄混了标记名与显示字段名;标记名用于屏幕版面布
置中,并位于ATTRIBUTES节中等号的左部;而显示字段名是位于ATTRIBUTES节中等号
的右部的字段名称。后者用于指示显示字段。

-1372 输入的数太大,不能放入十进制或金额变量。

任何当前的informix产品可能不返回这条信息。如果出现这条信息,可参考-1226
号错误的解释。如果错误重复出现,请记录所有现场信息,并与Informix技术支持部
门联系。

-1373 field显示字段名不在CONSTRUCT/INPUT语句的显示字段列表中。

内部函数get_fldbuf( )或field_touched( )被调用时带有指定的显示字段名。但在
CONSTRUCT或INPUT语句中不需要从该显示字段输入。结果,函数无法返回任何有用
值。检查所有这些函数的使用情况,并与语句开始部分的显示字段列表进行比较。

-1374 SQL字符截断或事务警告。

程序设置了WHENEVER WARING STOP,并且某个警告条件成立。如果涉及的语句是
DATABASE语句,条件是刚打开的数据库使用事务日志。如果是任何其它语句,条件是
数据库的字符值必须被截断来适合它的目标。

-1375 SQL NULL值在聚合或ANSI模式的数据库警告。

程序设置了WHENEVER WARING STOP,并且某个警告条件成立。如果涉及的语句是
DATABASE语句,条件是打开的数据库是符合ANSI标准的。如果是任何其它语句,条件
是在聚合值的计算中,已使用null值。

-1376 SQL -INFORMIX-OnLine或程序变量失配警告。

程序已设置WHENEVER WARING STOP,并且某个警告条件成立。如果涉及的语句是
DATABASE或CREATEDATABASE语句,条件是数据库被-OnLine数据库服务器开本。如果是
任何其它语句,条件是SELECT语句返回的值多于程序变量可包含的数目。

-1377 SQL浮点到十进制的转换警告。

程序设置了WHENEVER WARING STOP,并且某个警告条件成立。该条件是在数据库刚打
开时,数据库服务器将使用DECIMAL数据类型取代FLOAT值。

-1378 SQL是非-ANSI的扩充警告。

虽然当前数据库是符合ANSI标准的,进行的数据库操作不属于ANSI SQL。这只是提示
信息。

-1379 不能直接调用报表函数。请使用OUTPUT TOREPORT语句.

报表函数已经作为CALL语句的结果被输入。但报表函数只能通过START REPORT、
-FINISH REPORT和OUTPUT TO REPORT语句运行。检查程序,寻找象调用普通函数一样
调用报表函数名的位置,并加以修改。如果想使用报表函数的某些代码作为子程序,
应把它放入独立的子程序中,然后从报表函数或其它位置调用。

-1380 只有字元表达式可以CLIPPED

如果你正试图遮除一表达式,你不可以CLIP非字元表达式.

-1381 调试时不能执行其它runner.

一个4GL runner的实例正在运行。如果正在调试,不能通过RUN命令、RUN加速按钮或
直接从windows中调入其它附加的实例。要想调入新的runner实例,首先须退出当前运
行的4GL应用。

-1390 分类 <分类名称>;在程序的任何模块中都没有定义。

命名的分类已经被说明和使用,但从未被定义过。分类必须在定义该分类的第一个成
员函数时被定义。

-1391 无效的分类指定,在AS从句中。

NEW或者COPY操作的AS从句指定的分类必须是从状态类继承的。

-1392 不能使用NULL对象。

在p 码运行程序中,试图向下引用一个NULL对象。也许程序已定义对象,然后在使用
!copy()或!derive()创建它之前,试图调用该对象的成员函数。

-1393 已经定义了分类 <分类名称>;。

程序试图第二次定义某个分类。

-1394 对内部函数ixRow对象参数是无效的。

ixRow参数应作为UNPACKROW()和PACKROWINTO()内部函数的第一个参数。

-1396 报表PRINT FILE源文件不能按读取方式打开。

在PRINT FILE语句中命名的文件不能被打开。检查文件名。如果不当前目录下,应指
定全路径名。如果指定文件名正确,确认文件存在并且你的帐户对它有读取权限。查
看操作系统错误信息以获得更多的细节。

-1778 对于这条命令,安全子系统不能被初始化。

保证该帐号有足够的权限。

-1779 这条命令只能由 Informix-Admin 组的成员来执行。

用属于 Informix-Admin 组的用户帐号来登录,或者请求
INFORMIX-OnLine Dynamic Server for Windows NT管理员将你的帐号添加到
Informix-Admin 组中,然后重试这个过程。

-1780 OnLine 只能由用户 informix 启动。

必须是 Informix-Admin 组成员才能启动
INFORMIX-OnLine Dynamic Server for Windows NT。
用属于 Informix-Admin 组的用户帐号来登录,
或者请求 INFORMIX-OnLine Dynamic Server for Windows NT
管理员将你的帐号添加到 Informix-Admin 组中。


-1781 OnLine 不能检索该用户帐号的帐号信息。

这个帐号信息丢了、或者无效。运行用户管理程序来检验该帐号的有效性。

-1782 OnLine 不能确认这个用户。

该用户没有适用于运行 INFORMIX-OnLine
Dynamic Server for Windows NT 的系统的有效帐号
或密码。必须在运行 OnLine 的系统上,为
该用户建立用户帐号和密码。

-1783 UnSetup 将进行下列操作:

* 删除 groupname 组和 username 用户帐号
* 删除 servicename 服务
* 从注册表中删除
分支软件\\branchname\\keyname\
是否还想删除所有的 Informix 产品文件和目录?
(Y,N,Q)

-1784 OnLine 不能初始化安全子系统。

INFORMIX-OnLine Dynamic Server for Windows NT以用户
informix 帐号运行,这个用户 informix 帐号必须有下列权限:

* 作为服务登录
* 建立标记对象
* 属于操作系统的一部分
* 属于 Informix-Admin 组

为了检验用户informix 是否具有这些权限,请访问用户管理程序,
并使用“策略/用户权限”对话框。

-1785 pathname\buildsmi.ext

这个信息引用了 buildsmi.bat 的输出。对于 Windows NT,
如果 "Error building sysmaster" 在 online.log 文件中出现,
则看一下文件 %INFORMIXDIR%\etc\buildsmi.out。

-1786 这个命令行选项在控制面板/服务/“启动”对话框中
规定的是 -i。

在控制面板/服务/“启动”对话框中规定的参数为 -i,
它使得 INFORMIX-OnLine Dynamic Server for Windows NT
初始化根 dbspace,而破坏了当前它所包含的所有信息。当
INFORMIX-OnLine Dynamic Server for Windows NT
作为服务运行时,它不提示用户去确认
已经规定的参数。如果一定要初始化根 dbspace,
请将参数规定为 -iy 。

-1787 OnLine 在配置文件中检测到一个失配。
Mirror chunk pathname = pathname, Offset = offset K, Size = size K。

检查大块的实际文件大小,对照 ONCONFIG 文件中
为镜像大块规定的大小。

-1788 OnLine 审计配置文件路径名太长。
它的路径名最多只能包含 maxnum 个字符。

最大字符数,或 maxnum,为 128。

-1789 OnLine不能获得用户username
的帐号信息。

检查用户帐号是否存在,以及它是否有效。

-1790 不能启动 OnLine。

请保证启动 INFORMIX-OnLine
Dynamic Server for Windows NT service 的帐号
是 Informix-Admin 组的成员。

-1791 在初始化共享内存时,OnLine
遇到了致命的错误。

在 %INFORMIXDIR%\online.log 中寻找错误原因。

-1792 OnLine 不能访问 %INFORMIXDIR%\dbssodir 或
%INFORMIXDIR%\aaodir。

检查对于 %INFORMIXDIR%\dbssodir 和 %INFORMIXDIR%\aaodir
前的路径字段的访问。如果 %INFORMIXDIR% 是在网络驱动器上,
请确保 oninit 进程权限没有改变。另外,还要确保在注册表中 AAO 和
DBSSO 组名是有效的。

-1793 OnLine 不能打开大块 chunkname。返回的系统错误值为 errno。

确保这个大块存在,并有正确的访问权限。

-1794 含有根 dbspace 的主要大块 chunkname 是无效的。
它需要重新初始化。

含有根 dbspace 的大块已毁损或超时。如果你备份了
INFORMIX-OnLine Dynamic Server for Windows NT
数据库,可以执行全系统恢复来恢复根 dbspace。
如果没有备份数据库服务器,则需要在启动
INFORMIX-OnLine Dynamic Server for Windows NT 时
用 -iy 参数重新初始化根 dbspace。

警告:用 -iy 参数启动 INFORMIX-OnLine Dynamic
Server for Windows NT,会重新初始化根 dbspace 并
真正毁损数据库服务器中的所有数据。除非再执行
一次全系统恢复,否则不能访问已经存在的
数据库。请不要重新初始化根 dbspace,
除非你肯定想这么做。

-1795 在共享内存中规定的大块数量
num_chunks 太大。

在当前配置状况下最大允许数量为 num_chunks 。
请规定更大的大块大小,并减少大块
的数量。

-1796 OnLine 在注册表子键中检测到与 MIRRORPATH 失配的数据。
对于 MIRRORPATH 检索的数据是路径名。

根 dbspace 没有被镜像。欲添加镜像,使用 onspaces 或 onmonitor。

-1797 对于指定的配置,根 dbspace 不够大。
其实际尺寸为 sizenum,而要求的尺寸为 sizenum。

在指定的磁盘上,根 dbspace 不合适。在指
定的磁盘上释放出所需要的空间量,或者改变
ROOTPATH 配置参数,指定拥有更多可用
空间的磁盘。然后重新启动 OnLine,用 -iy
参数初始化根 dbspace。

警告:用 -iy 参数启动 OnLine,会重新初始化根
dbspace,并完全破坏了 OnLine 的全部数据。除非
后来再做一次全系统恢复,否则将永远不能访问
已存在的数据库。请不要重新初始化根 dbspace,除非
你肯定要这么做。

-1800 无效的事务状态。

在停止连接之前,必须提交或滚回当前事务。

-1801 不支持多重服务器事务。

试图在单个事务中跨越多个连接。如果建立连接时使用WITH CONCURRENT
TRANSACTION从句,就可以当一个事务活动时转换到不同的连接。
该错误信息可以在下列试图转换连接时出现:

* 如果当前的连接是对于6.0或更高版本的数据库服务器,且建立连接时没有
指定WITH CONCURRENT TRANSACTION从句,并且当前连接中有一个活动的事务。

* 如果当前连接属5.0版本数据库服务器,且建立连接时没有指定WITH
CONCURRENT TRANSACTION从句,并且当前有一个数据库在此连接上打开。

-1802 连接名在使用。

已有一个具有相同连接名的连接被建立。每个连接必须拥有唯一的连接名。为该连接
改名,重试一遍。

-1803 连接不存在。

在SET CONNECTION或DISCONNECT语句中的连接名不对应于已建立的连接。检查你的程
序,是否进行了连接,如果是,确认该连接没有停止连接。并且检查语句中失败的连
接名的拚写。

-1804 无效的数据库环境。

数据库服务器无法连接到你指定的数据库环境上。服务器无法定位到数据库服务器或
你指定的数据库上。检查你的语句的句法。如指定数据库服务器,必须使用符号@。不
能使用//。

-1805 无效的连接名。

连接名是无效的。连接名必须符合和任何其它标识符一样的命名规则,即最多18
个字符,可包括字符、数字和下划线。并且不能是ANSI保留字。如果连接名用于原始
的CONNECT TO语句,必须在后续连接语句中使用该连接名。确认连接名是有效的标识
符,并且你使用连接名而不是一些其它值。

-1807 没有连接,不是进行停止连接。

企图中止一个当前不存在的连接。检查程序,确认你没有对该连接执行DISCONNECT语
句。

-1808 重新连接server_name服务器i来进行数据库操作。

如果使用CONNECT语句连接数据库服务器,就不能通过-DATABASE语句之一(
DATABASE、STARTDATABASE等)隐含地重新与服务器连接。必须使用SET
CONNECTION语句将连接转到它。

-1809 服务器拒绝该连接。

检查对所指服务器是否具有连接权限。如果同时指定数据库服务器和数据库,也检查
是否对该数据库拥有存取权限。

-1810 停止连接错误。

某连接没有被DISCONNECT ALL语句停止连接。某个连接的数据库服务器可能已经终
止。如果不是这种情况,原因就是软件内部的。如果错误重复出现,请记录所有现场
信息,并与Informix技术支持部门联系。

-1811 在显式连接后不允许隐含连接。

一但使用CONNECT TO语句建立与数据库服务器的显式连接,就不能使用DATABASE
语句之一隐含建立与其它数据库服务器的连接。显式连接之后,必须使用CONNECT TO
语句连接其它数据库服务器。

-1812 内部错误。

如果这个内部错误重复出现,请记录所有现场信息,并与Informix技术支持部门
联系。

-1813 只有当前连接能静止不正确地使用SET CONNETCTION DORMANT语句。

你试图让已经静止的连接进入静止状态。或者你试图让正被其它线索使用的连接
进入静止状态。

-2013 不能打开输出屏幕表格文件<文件名>;。

很可能你的帐户不具有所指目录的写入权限;或者磁盘已满。在某些系统中,可能与
打开文件个数的极限有关。查看操作系统信息,以获得更多信息。

-2014 操作系统命令行中的参数个数不对。至少需要一个参数。

如果从命令行运行屏幕表格编译程序,必须指定-d选项或屏幕表格的名字。

-2015 在<行号>;行<列号>;个字符内,已打开的注释中又出现一个注释起始符。这可
能是由于关闭以前打开的注释失败,它开始在<行号>;行<列号>;个字符内。


不支持嵌套的注释。检查屏幕表格说明和所有注释,确认每个开大括号有一个对应的
关大括号。

-2016 注释被打开,但没有关闭。最后的注释开始在<行号>;行<列号>;个字符中。

在报表说明中的适当位置插入注释结束符。

-2017 字符数据值不能正确转换成该显示字段类型。

在显示字段输入的字符值(引用串)与该显示字段的数据类型不同,比如INTEGER。输
入的字符又无法转换成该显示字段的类型。查阅该应用的操作说明。然后重新输入数
据。

-2018 在<行号>;行<列号>;个字符中出现语法错。在它的环境中,该结构无法解释。

该信息指出源文件中编译程序无法解释的确切位置。实际的错误可能更早,在文件的
前部,也许在几行之前;但不会是在文件的后部。其它的,并且更为具体的错误信息
也应出现。

-2019 整数超过允许大小的最大值。

INTEGER数据类型可接受绝对值范围从0到2,147,483,647(±231-1)的数字。如果要存
储超出此范围的数字,字段或变量必须重定义为DECIMAL数据类型。(数值
-2,147,483,648是32位数值,但不能被接受;在4GL中它用于指示空值。)

-2020 表table-name不能打开。要求操作系统按写入方式打开该表。

你正在使用数据库服务器,它管理表作为普通磁盘文件。当前数据库作为目录,表是
其中的文件。参看操作系统错误信息,会得到更多的信息。定位数据库的目录(或在
当前目录或在环境变量DBPATH命名的路径上)。确认有足够盘空间。在UNIX环境,你
的个人帐户不必有对该目录及表文件的写权限。但对组-id informix它们必须是可写
入的。

-2021 指定了非法的颜色。颜色0到7依次是白色、黄色、紫红色、红色、靛色、绿
色、蓝色和黑色。

无论在屏幕表格说明的COLOR属性中,还是在4GL程序的显示属性中,颜色必须由名字
指定,拼写如以上信息所示。检查该语句的拼写和标点。

-2022 标识符超过标识符的最大长度<长度值>;。

所有字段名和其它标识符名不能超过所示长度。必须修改屏幕表格说明并重新编译。

-2023 引用串超过引用串的最大长度<长度值>;。

不能使用更长的引用串。在屏幕表格中,不能将两个短串联结成一个长串,因此这是
绝对的长度极限。必须修改屏幕表格说明并重新编译。

-2024 已有一个记录名被指定了。如果记录名与屏幕表格中的表名相同,则创建一
个同名的缺省记录。

确认每个屏幕记录和屏幕数组的记录名在屏幕表格说明中是唯一的。为每个用于
ATTRIBUTES节中的表自动定义一个屏幕记录,来定义一个显示字段。因此,如果定义
与表名相同的记录,就会认为是重复。

-2025 在<行号>;行<列号>;个字符中虽然没有打开任何注释,但却发现了注释结束符
(})。

除非包含在引号中,否则注释符必须是一一对应的。很可能在编辑过程中注释起始符
偶然被删除。修改屏幕表格说明,使注释合法分界。

-2026 FORMONLY field显示字段名没有指定类型。如果包含列表或指定缺省值,其
类型必须指定。

定义form-only显示字段(没有联接到数据库字段的显示字段)的普通方法是:
tagname = DISPLAYONLY.fieldname TYPE datatype
要求有TYPE从句。检查属性语句并重新编译屏幕表格。(关键字FORMONLY用于由4GL编
译程序编译的屏幕表格。与DISPLAYONLY意义相同)。

-2027 在<行号>;行<列号>;个字符中存在非法字符(不可见字符或控制字符)。在列
表中已被空格取代,但仍存于源(输入)表中。在重新编译前应将其删除。

当使用字处理编辑器的文件模式而不是文本模式时可以把非法字符引入到文件中,或
者在编辑时敲入非打印键,或者由数据损坏引入的。

-2028 符号<名称>;不表示在这个屏幕表格中使用的表前缀。它不能在这里用于选择
记录元素。

在SCREEN RECORD语句中,每个元件必须由定义于TABLES节的表名引出,或由单词
FORMONLY。对照TABLES节检查指定名称的拼写,并检查语句其余部分的标点。

-2029 屏幕记录数组<名称>;中元素的大小,或者与数组指定的维数不同,或者它们
自相矛盾。

屏幕数组的维数写在紧接其名后的方括号内,如下例所示,它的维数是12。
SCREEN RECORD details[12](items.item num,items.item desc,unit_price)
这时,应精确地有12个屏幕显示字段,每个与屏幕记录列出的三个字段之一相关联。
当一个或多个字段出现的次数有所不同时,本错误信息出现。

-2030 在<行号>;行<列号>;个字符发现排印错。

指定位置的单个字符,虽然是可打印的,但不是预期的并且不符合屏幕表格说明的语
法。

-2031 WORDWRAP属性只能指定到CHAR、-VARCHAR和TEXT显示字段。

这条PRINT语句将WORDWRAP函数用于一个非字符数据的数值。检查该显示字段名正是你
所要的,并检查语句其余部分的标点。

-2032 上面的数值无法成功转换成INTERGER或DOUBLE或LONG。

数值常数出错。很可能数字位数过多。检查该语句的标点。可能两个数值被写成一个
数。

-2033 显示字段<名称>;有一缺省值,它不在其所包含的值范围内。

指定的显示字段既有DEFAULT属性也有INCLUDE属性,但它们不兼容:缺省值不是允许
值之一。修改属性之一,并重新编译屏幕表格说明。

-2034 该特性在INFORMIX-SQL中不可用。在INFORMIX-4GL中通过"form4gl"屏幕表格
产生器可用该属性。


PERFORM屏幕表格编译程序和4GL屏幕表格编译程序接受非常类似的屏幕表格说明,但
在某些方面存在差别。这个语句使用4GL功能PERFORM不能处理它。

-2035 如果指定属性WORDWRAP,应该用于联结中的所有字段。

默认本信息。它用于PERFORM(联结)的特性,而4GL不支持该特性。

-2036 多行显示字段的显示行位于不同屏幕页中。

多行显示字段(多重显示字段带有同样的标签,具有WORDWRAP属性)必须完整地在一
个屏幕页内。也许并没有把显示字段设计在两页上。但如果该页的版面布置,加上4行
保留行,高于物理屏幕(象在SCREEN语句或在命令行中行维数所指定那样),在页可
容纳的最后一行后开始新的一页,这样屏幕表格被分割;并且可能会意外地分割多行
显示字段。无论如何重新安排显示字段,使多行显示字段放在在单个页中。

-2037 只能为BYTE和TEXT类型显示字段指定属性PROGRAM。

显示字段属性PROGRAM指定一个外部程序编辑或显示BYTE或TEXT值;这些值假定为
太大,并对常规的屏幕表格显示方法是特殊的。但在这个语句中,该属性用于其它不
支持类型的字段。检查表名和字段名,确认无误,并检验在DATABASE语句中命名的
数据库的表的当前定义。

-2038 BLOB显示字段不能进行联结。

BYTE和TEXT类型字段不能进行比较;因此它们不能用于联结表;它们不能作为联结字
段或在COMPOSITES语句中。检查表名和字段名,确认无误,并检验在DATABASE语句中
命名的数据库的表的当前定义。

-2039 BLOB字段不支持以下属性:AUTONEXT、DEFAULT、INCLUDE、VERIFY、RIGHT
和ZEROFILL。

BYTE和TEXT类型字段不能按这些属性使用方式使用。检查表名和字段名,确认无误,
并检验在DATABASE语句中命名的数据库的表的当前定义。

-2040 屏幕表格名<名称>;超过最大字符长度的长度。

屏幕表格编译程序对名字长度的限定可能小于宿主操作系统对它的限定。应将屏幕表
格说明文件换名,并重新执行该命令。

-2041 屏幕表格文件名无法打开。很可能不存在。或用户没有读取权限。

检查文件名的拼写。检查屏幕表格文件存在于当前目录下。或如果在其它路径下,提
供了正确的路径名。在UNIX系统中,如果上述检查无错,检查你的帐户有该文件的读
取权限。

-2042 上面语句中或附近的BLOB显示字段的用法不正确。

BYTE和TEXT类型字段不能按在该语句中使用方式使用。检查表名和字段名,确认无
误,并检验在DATABASE语句中命名的数据库的表的当前定义。

-2043 屏幕版面布置超过指定屏幕宽度。这仅是警告信息。

假设的屏幕宽度可在SCREEN语句或屏幕表格编译程序命令行参数中得到,缺省值是80
个字符。如果当前屏幕表格说明被显示于具有此宽度的终端,或者一些行被截断或者
行被不明显地“自动换行”。

-2044 最多可以为每个字段的每个条件指定一个颜色属性。

检查ATTRIBUTES语句,COLOR属性附近可能有错。找出漏掉的标点。

-2045 4GL显示字段的条件属性不能取决于其它显示字段的值。

属性COLOR中WHERE子句的布尔表达式只能使用显示字段名或常数。修改该属性并
重新编译屏幕表格。

-2100 显示字段field存在校验串错误,String =string.

在syscolval或syscolatt表中的格式串或校验串之一未被正确地编码。字符串作为其
应用的显示字段来指定。使用Windows的Column attributes Dictionary实用工具或者
DOS和UNIX的upscol实用工具修改该字符串。

-2800 说明部分的第一行必须是关键字database后接数据库名,或者关键字
FORMONLY(只限4GL)。还可接WITHOUT NULL INPUT选项.

除了注释行,屏幕表格说明必须以命名数据库开始。检查文件中的标点和拼写错误。
参照该产品的参考手册,以得到DATABASE语句允许的选项。(这条信息当前不使用,
在4.0版本或更早版本的产品中才能遇到)。

-2810 名称name不是现存的数据库名。

在屏幕表格说明起始部分的DATABASE语句中的名称,不是可以找到的数据库。除非使
用-OnLine,数据库必须被置于当前目录下或者在环境变量DBPATH中命名的目录下。

-2811 写出时无法打开临时表table-name。

应用程序试图在数据库中创建一个临时表或者一些其它临时文件,但收到数据库服务
器产生的错误代码。最可能的原因是磁盘空间不够。查找包括操作系统信息的其它错
误信息,以获取更多信息。

-2812 临时表table-name无法读取。

应用程序在数据库中创建并填充一个临时表,或者创建并填充一些其它临时文件,但
试图从中读取数据行时,收到数据库服务器产生的错误代码。最可能的原因是硬件失
败。查找包括操作系统信息的其它错误信息,以获取更多信息。

-2820 括号之间的标签名没有正确地给出或者标签丢失。

在屏幕表格说明的SCREEN节的这行中,存在由中括号指定的显示字段;但在括号内应
有简单名而实际上没有:或者除了空格外没有其他的内容,或者是个无效的名称。检
查该行的标点,确认括号间只有一个简单标识符。

-2830 在这行找到左中括号,但无右中括号与之匹配。

屏幕显示字段不能跨行。检查SCREEN节,确认所有显示字段被适当地标记。如果创建
多行显示字段,对多重完整的显示字段须使用同一显示字段标签标记。

-2831 控制块超过显示字段的最大极限。

在控制块的OF子句中列出的字段或表太多。这将使你分别写控制块,每个对应原列表
的一部分。

-2832 屏幕表格在显示字段的起始和结束位置使用“|”。因此,屏幕表格必须指定
同一字符作为左右分隔符。可使用INSTRUCTIONS节中的DELIMITERS命令定义它。

确定存在DELIMITERS语句,并且指定了同一字符作为左右分隔符。

-2834 NULL不能当作缺省值。它已经是你不指定任何值时的缺省值。

ATTRIBUTES语句包含指定NULL值的DEFAULT从句。删除该从句或指定其它值。

-2840 屏幕表格中没有定义标签标记。

指定的名称在ATTRIBUTES语句的左部出现,但不在SCREEN节的括号内。检查已定义的
显示字段标记,弄清为什么它被漏掉。

-2841 在属性节前屏幕表格必须包括一个表的说明。

检查屏幕表格说明文件,确认是否按顺序存在DATABASE语句、SCREEN节、TABLES节和
ATTRIBUTES节。

-2843 字段column-name不在屏幕表格说明中。

在ATTRIBUTES语句中的名称,应预先在屏幕表格说明中定义。检查语句中所有名称的
拼写,确定它们被恰当的定义。

-2844 在屏幕表格说明中,字段column-name与一个以上的显示字段关联。

在ATTRIBUTES语句中任何表的字段只能和一个显示字段相关联。也许你试图显示的字
段源自两个或两个以上表,它有着相同的字段名;在这种情况下,将表名作为字段名
的前缀,以区别它们。

-2845 包含字段column的表table-name的复合字段没加索引。为该字段创建索引可
极大地改善性能。

使用索引可减少多层联结表所需的时间。但索引不是必须的。尤其当表很小或者在初
始测试阶段。

-2846 显示字段field-name不是表table-name的成员。

在这个语句中假定所指的名称是这个表的一部分,但它在当前的数据库中不对。检查
两个名称的拼写。如果无错,确认使用了正确的数据库,且该表没有被修改。

-2850 名字<名称>;不是这个数据库的字段名。

屏幕表格的TABLES节中指定的表的确存在。但应在ATTRIBUTES节中命名的字段名不存
在。对照实际表检查其拼写。可能表已被修改或字段已被改名。可以在Tables菜单
下,选定info,使用INFORMIX-SQL检查字段名。

-2856 TODAY属性只能赋予日期字段。

TODAY函数(不是属性)返回今天的日期值。该值只能赋予类型为DATE或DATETIME的显
示字段。在这个语句中的显示字段有不同的类型。在4GL程序中提供自动数据转换,但
在屏幕表格环境中无此功能。

-2857 在联结列表中,只能存在一个主要复合字段。

这语句定义一个联结列表,两个或多个字段名与同一屏幕表格显示字段关联的列表。
在这样的列表中,在字段名前有星号表明该字段是检验联结中的主要字段。在任何联
结中只能存在一个这样的字段,但这个列存在两个或更多。检查检验联结的文档,并
选定一个单一的主要表。

-2858 表table-1和表table-2联结。但它们的联结字段不属于复合键。

在两个表之间已定义两个或更多不同的联结字段。但在联结字段上不存在复合索引。
该索引是用以保证复合键的存在的。即,保证联结字段值的任意复合只出现一次。检
查两个或两个以上定义这两个表的联结字段的ATTRIBUTES语句。确认它们如你所望;
例如,确认是基于两个或多个字段联结两个表,而不是基于一个字段联结三个或更多
的表。如果需要复合键,可使用命令CREATE INDEX为至少表1的那些字段创建复合
唯一索引。

-2859 字段<字段名>;是一个以上的表的成员,你必须指定表名。

TABLES节中两个或两个以上表均包含指定名称的字段。必须指明你要的是哪个表。方
法是将表名作为字段名前缀。如<表名>;.<列名>;。无论在屏幕表格说明的任何位置使用
该名称都这样做。

-2860 存在对column-name的字段/值类型失配。

该语句使用DEFAULT从句为显示字段赋值,或者在INCLUDE从句中使用该显示字段的
值,但使用的数据不符合显示字段的数据类型。检查显示字段的数据类型(它来自与
之关联的字段),并确认仅设定兼容的数值。

-2861 已超过最大的表数。

在一次可使用的表数目存在一个极限(这个极限随着不同的宿主系统或者不同的数据
库服务器而不同)。它迫使你减少该屏幕表格使用的表的数目。

-2862 在数据库中找不到表<表名>;。

屏幕表格中使用的所有表在屏幕表格编译时必须存在。以便编译程序可验证字段的数
据类型。指定的表在屏幕表格命名的数据库中不存在。检查表名和数据库名的拼写。
如果无错,或者没有使用期望版本的数据库(检查环境变量DBPATH的值),或者数据
库已被修改。

-2863 在指定表中不存在字段column-name。

屏幕表格的TABLES节中指定的表确实存在。但应在ATTRIBUTES节中命名的column-name
不存在。对照实际表检查它的拼写。可能此表已被修改或者该字段已被改名。也可在
Table菜单下,选定info,也可使用INFORMIX-SQL检查字段名。

-2864 在指定表中不包含表table-name。

指定的表用于这个语句,但在屏幕表格说明的TABLES节中无定义。检查其拼写;如果
无错,将该表增加到TABLES节中。

-2865 在表table-name中不存在字段column-name。

在这语句中隐含有表示的字段是指定表的一部分(很可能语句涉及table-name.
column)。但在那个表中没有定义。检查两个名字的拼写。如果没有错误,检查数据
库的内容;很可能该表已被修改或字段已被改名。

-2866 NOW属性只能赋予datetime字段。

这个信息没有在任何当前的产品中使用。SQL不提供NOW属性或函数支持;请用CURRENT
函数。

-2867 CURRENT属性只能赋予datetime字段。

CURRENT函数(不是属性)以DATATIME值产生当前的日期和时间。在语句中引用的显
示字段,不具有DATATIME数据类型。在该环境中不支持自动数据类型转换。检查该
语句,确认引用所期望的显示字段,并修正屏幕表格,将DATETIME值只设定于
DATETIME显示字段。

-2870 下标字段大小与显示字段中分配的空间不匹配。

该属性语句将字段的子串与显示字段相关联。但是,或者子串数字错(第一个小于1或
者大于该字段的大小,第二个小于第一个),或者数字正确但选择的字符个数与显示
字段大小不同。修正子串数字,使之与显示字段要求的字符数绝对一致。

-2880 单词'screen'或者'end'丢失。

每个屏幕表格说明必须以关键字END结尾,必须包含关键字SCREEN。它们都必须在每行
的第一列开始。检查屏幕表格说明内容,确认其包括所有必要的节,并适当地标记。

-2890 屏幕定义必须由左大括号‘{’开始。

每个屏幕版面布置必须置于大括号({})中。左大括号必须是所在行第一个字符。检查
屏幕表格说明,确认屏幕版面布置的句法结构是正确的。

-2892 字段column-name名在屏幕表格中出现一次以上。如果希望某字段在屏幕表格
中重复。使用同样的显示字段标签。

在两个或两个以上位置显示同一字段的方法是:在屏幕版面布置中放置两个或两个以
上显示字段,每个显示字段具有相同的标记名。然后,在ATTRIBUTES节中使用一条单
独的语句,使那个标记名和字段名产生关联。当前的字段值将在所有的显示字段重
复。如果需要显示不同字段。列在ATTRIBUTE节中的字段名必须不同。如果需要显示
不同字段,而又恰巧具有相同字段名。须将表名作为其前缀。

-2893 显示字段标签标记名在屏幕表格中出现一次以上。但长度不同。

可以在屏幕版面布置中放置一个显示字段的多重拷贝(所有拷贝均显示同一字段),
但所有拷贝必须是同样长。检查SCREEN节,以确认:如果打算一个显示字段有多重拷
贝,则所有拷贝必须完全相同。

-2895 field-size的显示字段长度与column-size的数据库字段长度不匹配。只是警
告信息。

该语句定义的字符显示字段大小(如SCREEN节中出现时所示)与关联字段的大小不同。
可在屏幕表格编译程序中指定-v选项,来产生此类警告信息。

-2901 显示字段名包含两个冲突的属性,第一属性和第二属性。

该语句自相矛盾。UPSHIFT和DOWNSHIFT属性不能用于同一显示字段;NOENTRY和
REQUIRED属性,或NOENTRY和VERIFY属性也不能用于同一显示字段。检查该语句并
修正选定的属性。

-2920 该字段column是主要的字段但未加索引。如为该字段创建索引,性能会大有
改进。

指定的字段已定义为检验联结的主要字段。这意味着无论何时操作员在该显示字段输
入一个数值,将会在该字段进行对照。如果索引存在,该对照操作非常迅速。现在该
字段无索引。如果没有索引,对照将会极其缓慢。除非该字段不允许操作员输入(这时
应删除星号)或者表很小(最多几十行),你应该在屏幕表格使用前为该字段创建索引。

-2921 数据库的dbname与当前的-INFORMIX-SQL版本不兼容。

屏幕表格中DATABASE语句命名的数据库是由老版本的informix软件创建。要使当前系
统能使用它,必须使用sqlconv实用工具进行转换。

-2930 字段名的部分多于一次在屏幕上显示。

这个屏幕表格在不同的显示字段中显示指定字段带有下标的部分。这是合法的;但任
何单一字符不能出现在一个以上的显示字段中。即,下标部分不能重叠。例如,可在
某显示字段显示name[25,49],而在另一显示字段显示name[50,74]。但不能同时显示
name[25,49]和name[25,74],因为某些字符会显示两次。

-2931 格式说明中存在错误。

检查该语句的FORMAT串内容。是否存在不正确的数据类型。如,数值字段含有#-
和.以外的字符;DATE字段存在不正确的内部长度。如,yyy要求三位数的年。

-2932 格式的指定只限浮点、小浮点、十进制或日期字段。

该属性语句指定了FORMAT串,但显示字段的数据类型不是支持的四种格式之一:
FLOAT、SMALLFLOAT、DECIMAL(或MONEY)和DATE.如果这不是DISPLAYONLY
字段,检查它是否附属于右字段,并确认该字段是否如你所预期的在数据库中定义。

-2933 格式宽度大于预置的显示宽度。

为这个显示字段指定的FORMAT串的长度大于该显示字段本身在SCREEN节表示的长度。
检查屏幕的版面布置,并加以修改,或修改格式使它们一致。

-2934 格式宽度小于预置的显示宽度。

为这个显示字段指定的FORMAT串的长度小于该显示字段本身在SCREEN节表示的长度。
检查屏幕的版面布置,并加以修改,或修改格式使它们一致。

-2935 用'-l' 选项或在屏幕节中指定的行数必须是从6到600之间的一个正整型数。

在SCREEN语句中或用-l(小写L)命令行选项给出的屏幕的垂直大小不在范围内。把它改
为指定屏幕表格将使用的终端的期望尺寸。

-2936 用'-c' 选项或在屏幕节中指定的字段数必须是从30到600之间的一个整型数。

在SCREEN语句中或用-c命令行选项给出的屏幕的水平大小不在范围内。把它改为指定
屏幕表格将使用的终端的期望尺寸。

-2940 显示的字段名既带有下标又不带下标。

这个屏幕表格在不同的显示字段中显示指定字段的全部,和它的下标部分。你可以在
不同的显示字段中显示一个字段的不同的下标部分,但这些部分不能重叠。换句话
说,一个字段的部分不能在同一屏幕显示两次。重新检查指定字段的所有使用。也许
你不想在两个地方命名它;或也许在不同的表中有两个以上的同名字段,你需要使用
表名区别它们。否则,在字段的每个显示字段上使用不重叠的下标。

-2941 <名称>;不是该屏幕表格上的一个用于显示的显示字段名。

这个语句引用了显示字段<名称>;,但没有定义这样的<名称>;。检查拼写,并重新检查
ATTRIBUTES节,看显示字段是如何定义的。

-2943 你已经超出了伪机器的容量。

这个语句中的表达式的处理太复杂。简化它并重新编译该屏幕表格(参见错误信息
-2988。)

-2944 你只能对表而不能对字段使用添加,修改,查询,或删除命令。

所有的添加,修改,删除,和查询操作都应用于整个行。所以这些控制块必须只能在
它们的打开命令中列出表名,而不能列出各个字段的名字。重新检查这个语句中的名
字,把字段名改为它们表的名字。

-2945 你只能对表而不能对字段使用添加,修改,查询,或删除命令。

只能在与表相联的显示字段上(不能在DISPLAYONLY显示字段上)执行聚合(AVG,
MIN,MAX,COUNT,TOTAL),并且表必须列在同一控制块的打开命令中。修正屏幕表格
说明并重新编译。

-2946 你不能在只能显示的显示字段<名称>;上计算一个聚合。

只能在与表相联的显示字段上(不在DISPLAYONLY显示字段)执行聚合,并且表必须列在
同一控制块的打开命令中。修正屏幕表格说明并重新编译。

-2950 字段<名称>;没有从1开始的节。记住,第一个下标是1,不是0。

来自同一个字段的多重子串被定义为显示的显示字段。可是,该子串没有覆盖毗连
的,字段的非重迭部分。或者没有第一节(从字段1开始),或者一节与另一节重迭。
重新检查指定的子串,考虑使用一个多行编辑显示字段替代一组子串;更简单的办法
是去编码并为数据输入提供更好的编辑。

-2951 左和右定界符必须用二个字符的串指定。

DELIMITERS指令要求一个恰恰是二个字符的串,当显示显示字段时使用左和右定界符
(标记)。字符可以相同但必须为二个。

-2952 为了使用一个图片,图片长度必须与显示的显示字段长度相同。

PICTURE属性指定的串的长度必须完全与SCREEN节中描述的显示字段长度相同。重新检
查这个显示字段的定义,使两个长度相同。

-2953 名字<名称>;不是这个屏幕表格中的一个数据库字段。

COMPOSITES列表中命名的所有字段必须被定义在ATTRIBUTES节中。检查所有名字的拼
写,并确保已经定义了它们。

-2954 你已经超出了控制指令数的极限。

这个屏幕表格的INSTRUCTIONS节超出了屏幕表格编译器所能处理它的能力。你将必须
简化这个屏幕表格,删除某些指令。

-2955 名称<显示字段标记>;不是这个屏幕表格中的一个显示的显示字段。

显示的名字出现在ATTRIBUTES节中但不在SCREEN节中。检查名字的拼写;在那些地方
之一出错,或者已经被从屏幕版面布置中忽略了。

-2956 你没能给显示的显示字段<显示字段标记>;设置一个值,因为它所相联的数据
库字段没有一个属于和<表名>;相同的表,它也不是一个可变的只能显示的显示字段。

你不能在LET语句中跨表设定值。在LET语句中与<显示字段标记>;有关的所有字段必须
属于控制块的打开命令中命名的表,或者它必须是一个只能显示的显示字段。

-2957 你不能把下一个显示字段设置为<标记1>;,这是由于它所联系的数据库字段没
有一个属于与<标记2>;相同的表。

NEXTFILELD语句中命名的显示字段必须与当前显示字段相同的表相联。再检查一下字
段和这个屏幕表格中的表之间的关系,并修正它。

-2958 在一个C函数中最多可以有十个参数。

由于有太多的参数,对外部C函数的调用是不合适的。你将必须找到某种方法用更少的
参数通过相同的信息。

-2959 两个表联结时最多只能有<限定数目>;个列配对,包括所有复合字段的组成部
分。

一个联结中包含的字段数目是有限制的。这包括ATTRIBUTES语句中命名的联结字段和
COMPOSITES语句中为同一个表命名的联结字段。

-2970 这个字段名与其它字段联结,但它没有被索引。建议为了跨表查询而索引那
个字段。创建一个索引可以及大地提高执行性能。

一个联结中包含的字段中至少有一个字段存在索引,则可以使联结操作非常快。可
是,当一个或两个表很小时(几打行)不需要索引。在使屏幕表格进入制作过程前,考
虑在所有联结字段上创建一个索引。

-2971 这个字段不是一个字符字段,因此不能被下标。

这个语句在一个字段名后包含一个下标------方括弧中的一对数字。可是,字段的数
据类型不是CHAR,VARCHAR,或TEXT。只有这样的字段才能被下标。
检查你是否命名了正确的字段;如果没问题,则检查它在数据库中的定义。

-2972 这个字段不能右对齐或填充零,这是因为它的显示宽度不匹配实际的字段宽
度。

为了使用RIGHT 或ZEROFILL属性,你必须保证显示字段大小(象SCREEN节中描述的那
样)完全与该数据库字段的宽度相同。重新检查这个语句,屏幕版面设计,和数据库
中表的定义以保证这些大小一致。

-2973 在一个显示显示字段描述中只可以有一个主要的字段。

这条语句定义了一个联结列表,一个有关相同屏幕表格显示字段的两个或两个以上的
字段名字的列表。在这样的列表中,在一个字段名前加上一个星号表明那个字段是一
个检验联结中的主要字段。在任何联结中只允许有一个这样的字段,但在这个列表中
却有两个或两个以上的主要字段。再检查一下检验联结上的文档说明并选择一个单一
的主要表。

-2975 用于显示的显示字段标签<标签名>;还未被使用。

指出的名字被定义在SCREEN节中,但不在ATTRIBUTES节中。再检查一下每节中的标记
并修正屏幕表格以便所有的标记都被定义。

-2976 已经过早地到达屏幕表格结尾。

这个屏幕表格说明有一个SREEN节但无TABLES 或ATTRIBUTES节。完成该屏幕表格说
明。

-2977 由于它们未联结,表<表1>;不能是表<表2>;的主。

MASTER OF指令中命名的这两个表必须被联结。表之间的联结通过在ATTRIBUTES
节中的一个语句中命名来自两个表的字段来表示。此处,检查表名拼写,并再查看一
下属性语句。

-2978 由于它们的类型或长度不同,字段<列名1>; 和 字段<列名2>;不能是联结的字
段。

一个联结中的所有字段必须包含来自相同定义域的数据。而实际上,这些字段有不同
的类型或(如果它们是字符字段的话)长度从而指出它们的内容不是来自同一个定义
域。检查字段名字的拼写以确保你命名了正确的字段。再检查一下数据库的设计并保
证这些表就是这些字段上的联结。

-2984 表标识符<表名>;被定义了一次以上。

改正TABLES节中的语句以便每个表只定义一次。也许你已经定义了一个与真正表名相
同的别名。

-2985 表标识符<名称1>;和<名称2>;表示相同的表。

在TABLE节中,这两个名字定义成涉及相同的数据库表。它们之一或者俩者是一个表别
名。修改语句以便每个名字只代表一个表,每个表仅有一个名字。

-2986 屏幕表格说明已经超出了主/明细对的最大限制数。

一个屏幕表格中可以支持的主/明细对数是有限制的。你必须找到一种方法去简化该屏
幕表格。

-2987 屏幕表格说明已经超出了限定屏幕的最大数。

一个屏幕表格中可以支持的屏幕版面布置数是有限制的。你必须找到一种方法去简化
该屏幕表格。

-2988 FORMBUILD已经用完内存。

屏幕表格编译器不能获得足够的内存去处理屏幕表格说明。你必须找到一种方法去简
化这个屏幕表格。

-2989 这个字段名是一个参考字段,但它未被索引。建议为了查寻而索引那个参考
字段。创建一个索引可以极大地提高执行性能。


你已经把指出的字段定义为使用LOOKUP属性的一个参考字段。这意味每当操作符在显
示字段中输入一个值,都在这个字段中查寻。当存在一个索引时这样一个查寻操作是
非常快的。此时该字段并没有索引。没有索引查寻可能非常慢。除非显示字段不允许
操作符input(这种情况下你应该删除星号)或者表非常小(至多几打),否则在使屏幕表
格进入使用状态之前你应该为这个字段创建一个索引。

-2990 字段<字段1>; 和 <字段2>;不在相同的数据库表中。

一个单一LOOKUP属性中引用的所有字段必须属于同一个表。检查名字拼写并保证它们
都是你所想要的字段。

-2991 警告: 你的多屏屏幕表格仅有第一屏将在4GL下显示。

当你使用4GL编译器编译一个多页PERFORM屏幕时,出现这个警告。一个4GL程序只能显
示多页屏幕表格的第一页。如果屏幕表格说明有多个SCREEN节,那么它已经被特意地
分成多页,这将必须重新设计4GL。如果只有一个单一的屏幕版面布置,由于它不适合
屏屏幕,4GL屏幕表格编译器把它分成两页。屏幕表格设计可能不允许由4GL保存四个
屏幕行。

-2992 显示标签<名字>;已经被使用。

由于某种原因,屏幕表格编译器认为指出的名字已经被定义了两次。这些名字必须在
屏幕表格说明中唯一定义。重新检查所有使用的名字,看是否它们之一有错误。

-2993 在这个屏幕表格中指定了一个循环联结路径。

这个屏幕表格定义了一串三个或更多的联结,使表A联结到表B,表B联结到表C,表C又
联结到表A。由于使用表别名名字,这种循环也许不是明显的。再检查一下ATTRIBUTES
节中所有的语句和所有的COMPOSITES语句,并绘制一张联结关系图表。修改这个屏幕
表格以便没有创建循环联结。

-2994 屏幕表格已经超出表之间最大的联结数。

可以指定的联结数是有极限的。你必须找出一种方法去简化该屏幕表格。

-2995 屏幕表格已经超过联结中容纳的最大表数。

可以容纳在一个联结中的表的数目有一个极限。你必须找到一种方法去简化该屏幕
表格。

-2996 已经出现了未预期的错误号 os-error。请给RDS打电话。

显示的错误号来自主机操作系统。"RDS"是Informix Software曾经用过的名字。这条
信息不应该出现。如果该错误再次出现,请记录所有情况,并与Informix 技术支持部
联系。

-2997 见错误号<号码>;。

显示的错误号是由数据库服务器返回的。请在这个文档中查找它。也可以查看其它错
误信息,那里也许可以给出更多的信息。

-2998 操作系统错误os-error: text。

显示的错误来自主机操作系统。这条信息不应该出现。如果该错误再次出现,请记录
所有情况,并与Informix 技术支持部联系。

-2999 SQL服务器终止。

应用已经与数据库服务器失去了联系。在UNIX下,可能已经有人偶然地杀掉了数据库
daemon进程或OnLine 线索,或者一个内部错误可能已经破坏了应用和数据库服务器之
间的管道。在本地网络系统中,文件服务器中数据库服务器进程或线索可能已经终止
或者文件服务器可能被down(关机)。寻找其它可以给出更多的细节的信息,尤其是操
作系统信息。

-3000 ISAM或系统错误号<号码>;。

查寻本手册中的错误号。

-3001 当前目录中没有屏幕表格。

你可以只运行当前目录中或者你的DBPATH环境变量中命名的一个目录中呈现的屏幕表
格。把目录改成包含想要的屏幕表格的目录,或者改成DBPATH的内容。

论坛徽章:
0
8 [报告]
发表于 2005-05-20 14:55 |只看该作者

贴个Informix错误代码中文解释供大家参考

-3002 没有BLOB显示字段可看。

你选定了View菜单选项。这个选项是让你查看一个屏幕表格的TEXT和BYTE显示字段的
内容;可是这个屏幕表格没有这种字段。

-3003 这个BLOB显示字段为空。

你选定了View(视图)菜单选项。游标定位在表达BYTE字段的一个显示字段中,并且你
已按下!键去编辑该显示字段的内容。可是,显示字段为null;要查看的数据不存在。
使用Query去选择这个字段中包含非null数据的一行。

-3005 你没有存取屏幕表格<名称>;的权限。

屏幕表格文件<名称>;存在;可是你的帐户没有读写该文件的操作系统权限。

-3006 在.frm文件中发现了一个未知的代码。请在再次运行它之前重新编译你的屏
幕表格。

重新编译该屏幕表格以保证该.frm文件没有被破坏。如果还出现相同的错误,检查你
正在运行的FORMBUILD和 PERFORM 产品是否在完全相同的版本级上(从命令行上执行命
令时,如果不使用-s选项,将显示版本号)。如果错误再次出现,请记录所有的情况并
与Informix技术支持部联系。

-3007 你的屏幕表格与当前版本的PERFORM不兼容。请在再次运行它之前重新编译你
的屏幕表格。

使用FORMBUILD编译这个屏幕表格,然后再运行PERFORM一次。

-3010 数据库 <数据库名>; 没找到。

屏幕表格DATABASE节中命名的数据库不能被打开。或者它不能被找到,或者你的
帐户还未被授予CONNECT那个数据库的特权。你可以使用INFORMIX-SQL去区分这些
情况。使用Database菜单的Select选项。如果列出了<数据库名>;,则数据库可以找到
但不能打开。

数据库服务器首先在当前目录中寻找一个数据库,然后在DBPATH环境变量中命名的目
录中寻找。请检查一下<数据库名>;.dbs是否存在于上述目录中的某一个。

-3011 一个表被锁定 -- 不允许读取或写入。

由于另一个用户已经用排他方式锁定了一个表,PERFORM不能继续。在表未被锁定时,
重新运行该事务。

-3019 非预期的错误数已经发生了,请给Informix Software打电话。

请记录所有情况并与Informix 技术支持部联系。

-3020 表<表名>;不在数据库中--再建一次你的屏幕表格。

无法找到在屏幕表格TABLES节中列出的一个表。再检查一下DATABASE语句以保证那个
屏幕表格正在使用正确的数据库。如果是这样的话,并且如果表名字的拼写是你所想
要的,那么该表已经被取消了或者被重新命名了。使用Tables菜单的Info
选项,你可以用INFORMIX-SQL检查表名。请使用正确的名字修正屏幕表格。

-3030 字段<字段名>;不在数据库中--再建一次你的屏幕表格。

屏幕表格TABLES节中指定的表存在,但ATTRIBUTES节中命名的字段column-nameb
不存在。检查column-name拼写与实际表的对照。表也许已经被更改了或者字段可能被
重新命名了。使用Tables菜单的Info选项,你可以用INFORMIX-SQL检查字段名。请使
用正确的字段名字去修正屏幕表格。

-3031 不能查找或打开表格 form-name

PERFORM 不能在当前目录或以 DBPATH 环境变量命名的目录中对编译表格
form-name.frm 定位。或者,即便它查找到文件也不能打开这个文件。检查名字的
拼法,看看文件是否存在,并检查是否已读取对它的存取。

-3035 字段 column-name 已改变字段类型 -- 重新建立表格。

在表格的 ATTRIBUTES 节中命名的字段 column-name 不再具有它在编译表格(表
已变更)时所具有的数据类型。检查目前的数据类型;然后检验表格说明以确保它
在适当大小的显示字段中来显示字段。按要求修改并重建表格。

-3037 字段 column-name 不是复合字段 -- 重新建立表格。

字段 column-name在表格说明中的INSTRUCTIONS节中是作为COMPOSITE的
一部分提到的。其实,对数据库中的该字段及其伙伴字段没有复合索引(对复合
关键字的所有列的索引)存在。编译表格之后,复合索引被取消。或者它应该被
恢复,或者表格应该被修订。

-3050 操作系统错误。不能打开临时文件。

PERFORM 正在试图打开一个先前建立的临时文件。
寻找操作系统错误信息,它可能会有更详细的信息。
你可能已经超出了打开文件数量的限制。
如果再发生这个错误,请注意所有的环境状况,
并与 Informix 技术支持部门联系。

-3060 操作系统错误。
不能建立临时文件。

PERFORM 建立临时文件失败。
在 UNIX 操作系统中,检查你的帐号是否允许在 /tmp
目录、或者在 DBTEMP 环境变量中命名的目录中进行写操作,
并检查该目录是否满了。可能你已经超出了
操作系统关于打开文件数量的限制。在这种
情况下,必须减少用在这个屏幕表格中的表
的数量。

-3081 指定的输出文件有错误的后缀。

输出文件可能没有下列使用后缀之一:
*.dat
*.idx
*.aud
*.per
*.frm
*.ace
*.arc
*.sql
*.unl
选择一个不同的文件名。

-3082 没有指定程序用于编辑这个BYTE显示字段。

在一个BYTE显示字段的显示中,屏幕表格用户已经锁上!。可是,没有为这个显示字段
定义program=attribute(属性)。

-3101 字段<字段名>;不允许 null 值。

当向一个表增加数据时,没有为该字段指定数据。可是,那个字段在数据库中被定义
为不允许null值。除非提供一个值,否则该行不能被增加。

-3120 显示字段中有错误。

输入到当前显示字段的数据不适合该显示字段的数据类型。

-3200 当前列表中无行。

在执行UPDATE,REMOVE,NEXT或PREVIOS命令之前,你必须首先查询表。

-3210 当前行位置包含一个删除的行。

现在显示的行刚被另一个用户删除。这行不再存在。直到你使用QUERY显示一个有效行
之前,你不能使用UPDATE,REMOVE,NEXT,或PREVIOUS命令。

-3260 这是一个无效值--它不在<表名>;表中。

这个字段与表table-name中的一个字段有一个检验联结。输入到这个显示字段的任何
值都必须在那个表中找到。请输入一个正确的值。

-3261 无效值---<表名>;表中不存在它的复合值。

与其它字段列出的这个字段作为屏幕表格说明的INSTRUCTIOND节中的一个COMPOSITE。
它指明那个地方需要检验对表table-name中字段的匹配。已经输入的、与复合值中其
它值一起考虑的那个值不在table-name中。

-3265 遗漏了<列名>;上要求的索引---请恢复。

在检验联结中的所有主字段(名字前带有星号的那些字段)必须被索引。也许由于编译
屏幕表格而取消了索引。重新创建索引并再运行一次该屏幕表格。

-3300 在你正在进行的方向上没有更多的行。

你到达了当前行表的开始或结尾。你可以用QUERY命令开始一个新的查询,或者使用
PREVIOUS或NEXT命令反向通过该列表的其它地方。

-3400 没有满足该条件的行。

在数据库中没有一行可以匹配该屏幕表格中输入的值。输入不同的值并再查询一遍。

-3420 这个值不是在有效的可能的值的范围内。

已经为该字段规定了可接受值的范围或列表(通过屏幕表格说明文件中的INCLUDE
属性)。你必须输入一个可接受范围内的值。

-3421 联结显示字段 table.column 不能由当前用户选定。

这个屏幕表格要求联结两个表中给出的那个表中的字段。可是,你的帐户名没有那个
表和字段的SELECT特权。为了获得这种特权,请与该表的所有者或数据库管理员联
系。

-3430 这个显示字段要求一个输入的值。

直到有一个值已经输入到指定的显示字段之前,该行不能被增加到表中。屏幕表格说
明文件中一个REQUIRED属性已经与该字段联系起来了。在这个显示字段中输入一个
值。

-3450 你表中的一行已经被其他某个人删除了。

另一个用户正在存取被你的屏幕表格所查询的那个表,而他已经删除了该表中由你的
查询所选定的一行。为了获得精确选定的行,请重新开始你的查询。当查询一个视图
时,版本4.0和更早版本的PERFORM可能返回这种错误信息,早期版本的产品不支持视
图。

-3451 这个屏幕表格没有要求数据输入的显示字段。

在这个屏幕表格说明中没有一个显示字段是允许数据输入的;它们所有都被标记为
LOOKUP或者标记为DISPLAYONLY而没有ALLOWING INPUT关键字。

-3452 不允许在一个远程表上进行增加,修改和删除操作。

正被查询的表在当前数据库(屏幕表格DATABASE节中命名的那个数据库)外的一个数据
库中。这种表格不能被修改。(这条信息当前已不使用了。它也许会在版本4.0或更早
的版本产品中遇到)。

-3460 本行已经被另一个用户锁定---请过一会儿再试一遍。

该表当前正由另一个用户使用。请等一会儿,然后重新输入你的语句。

-3500 两次输入不相同---请再试一遍。

为了防止排印上的错误,这个显示字段中的值必须被输入两次。输入的值必须是相等
的。仔细地重新输入该数据。(屏幕表格说明文件中的VERIFY属性已经与这个字段
联系起来了。)

-3600 没有为这个表指定明细表。

你必须首先规定这个表作为屏幕表格的INSTRUCTION节中的另一个表的主。

-3610 没有为这个表指定主表。

你必须首先规定这个表作为屏幕表格的INSTRUCTION节中的另一个表的细节。

-3620 你没有写入这个表的权限。

你没有插入或修改这个表的特权,所以不能插入或修改一个字段。检查该表的所有者
或为了数据库必要的权限问拥有数据库管理员(DBA)特权的人。

-3630 操作系统错误: 不能写入一个临时文件。

PERFORM早先创建了一个临时文件但现在不能写入它。最可能产生这一错误的情况是磁
盘已经装满了。另一种情况是临时文件创建后由另一个用户把它删除了。

-3650 你必须首先删除联结本行的<表名>;行。

你希望删除的行是一个检验联结的主要成员。你不能没有先删除联结它的任何行就去
删除这一行。

-3651 你已经超出了你的系统所允许打开表的个数。

正在执行的语句可能要求PERFORM超出操作系统所限定的打开文件数。你将必须减少屏
幕表格说明中的表数。

-3660 你必须首先修改联结本行的<表名>;行。

你希望修改的行是一个检验联结的主要成员。不允许你修改可能使其它表中联结的行
无效的这个字段中的行值。你必须首先修改联结该字段的表名(<表名>中的那些行。

-3670 操作系统错误: 不能找到临时文件。

较早的PERFORM创建了一个临时文件;现在它不能改变该文件中的文件位置。也许该文
件在它创建后已由另一个用户删除了。查看来自操作系统的信息,那可以获得有关本
问题的更多细节。

-3680 PERFORM已用完内存。

PERFORM 不能获得它所需要的内存数据空间。你将必须降低屏幕表格的复杂性。

-3690 细节不能被执行 -- 第一个和第二个表不能联结。

一个 master-detail 与在屏幕表格的 INSTRUCTIONS 节中指定的两个表相关。然而,
这两个表不能联结。在ATTRIBUTES节中增加一个联结属性。

-3700 没有授权读取 <表名>;。

你的帐户没有被授予对表<表名>;的SELECT优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3710 没有授权对 <表名>; 修改。

你的帐户没有被授予对表<表名>;的UPDATE优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3720 没有授权对 <表名>; 增加。

你的帐户没有被授予对表<表名>;的INSERT优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3730 没有授权对 <表名>; 行删除许可。

你的帐户没有被授予对表<表名>;的DELETE优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3731 不能打开表 <表名>;。

数据库服务器不能打开描述这个表的文件。你可能已经超出一个操作系统在打开文件
上的限制;如果是那种情况,你将不得不减少该屏幕表格中包含的表数。然而,首先
要确认在数据库目录 (它的名字是database-name.dbs)有这个表的文件并且帐户已经
读取该文件。表文件的名字是由<表名>;,三位数字,和后缀.dat构成。

-3750 命令失败。

这个信息不是由任何当前的Informix产品返回的。如果该错误出现,请记下全部细节
并与Informix技术支持部门联系。

-3751 按回车继续。

这个信息不是由任何当前的Informix产品返回的。如果该错误出现,请记下全部细节
并与Informix技术支持部门联系。

-3752 你不能使用这个编辑功能,因为存在一个图片。

这个显示字段用一个PICTURE属性指定它的格式(在屏幕表格说明文件中)。当你正在编
辑这样的一个显示字段时,你不允许使用特定编辑键(例如,CTRL-A,
CTRL-D, 和 CTRL-X)。只用可打印字符和空格输入该值。

-3754 你已经超出伪机器堆栈空间。

减少屏幕表格的复杂性。特别是减少循环和IF语句叠加的层次,并将LET语句中非常复
杂的表达式段为简单表达式。

-3755 选择的只可显示的显示字段<标记名>;不能被存取。

传到 C函数 pf_nxfield() 的显示字段标记名是一个只可显示的显示字段的名字。因
为用户不能在只可显示的显示字段输入数据,指针不能定位在只可显示的显示字段。
检查提供的标记名;如果它是期望的显示字段,检查那个显示字段的属性并找出为什
么它被设置为只可显示的。

-3756 在这个时间,选择的显示字段<标记名>;不能被赋予一个值。

指定的显示字段不在当前的表中。指针不允许输入这样的显示字段且不能在其中设置
值。

-3757 显示字段<标记名>;出现一个转换错误。

传到 C函数 pf_putval() 的数据类型不能转换到屏幕显示字段<标记名>;的数据类型。
检查该值并将在屏幕表格定义中的显示字段的数据类型与 valtype比较。

-3758 下一个选择的显示字段<标记名>;不在当前表中。

传到 C函数 pf_nxfield() 的显示字段标记名是不在当前表中的一个显示字段的名
字。指针不允许输入这样的显示字段。

-3759 在屏幕表格中,显示的显示字段<域名>;不存在。

传到 C函数 pf_nxfield() 的显示字段标记名在这个屏幕表格中没被定义。检查传送
的串;如果它是期望的,检查屏幕表格定义看看有什么变化。一个通常的错误是弄混
了标记名和显示字段名,标记名是用在屏幕版面布置中的,并且在ATTRIBUTES节中处
于等号的左边,而显示字段名是用在ATTRIBUTES节中等号右边的字段名。

-3760 非字符显示字段或表达式之间不能使用匹配。

在屏幕表格的INSTRUCTIONS节中,一个IF-THEN-ELSE语句使用关键字MATCHES
比较两个显示字段。然而,至少一个显示字段不是一个字符显示字段,且MATCHES只能
被用于字符显示字段。检查在INSTRUCTIONS节中全部使用的MATCHES,确认它只提
供给字符显示字段。

-3761 错误 -- 企图被零除。

在INSTRUCTIONS字节中,一个分式表达式有一个零分母。检查在INSTRUCTIONS字节中
全部分式的使用,找寻任何可能出现的零分母(可能分母是一个显示字段,用户输入一
个零)。用IF-THEN-ELSE进行测试以确保这些表达式不出现零。

-3762 在屏幕表格中定义的用户函数<函数名>;不能在C函数定义表 userfuncs 中被
找到。

屏幕表格的 INSTRUCTIONS 字节包含对一个函数<函数名>; 的调用,且执行假定这个是
一个外部 C 函数的名字。然而,每个这样的函数的名字和地址必须出现在一个固定的
命名为userfuncs 的数组中。那个数组,随着外部函数的机器代码,与一个执行的客
户版本相连接。由于名字在该数组中不出现,所以执行不能调用它。

检查你正在实施正确的,执行的客户版本。(该程序的原始版本无外部函数连接到
它)。查看<函数名>;的拼写是否是正确的。然后检验 C函数的来源,确认
userfuncs 数组的定义是正确的。

-3763 这个程序有一个无效的序列数。请向你的安装指导咨询。

Informix 软件产品安装不合适。检查安装过程。如果你需要帮助,与你的Informix
代表联系。

-3764 屏幕太小。必须至少有6行30列。

在一个小于6行30列的屏幕或窗口中,PERFORM不能操作。你必须增加正在实施执行的
终端窗口的大小。6行30列是绝对的最小值;然而,该窗口也必须足够包含将要显示的
屏幕表格。

-3765 屏幕表格太大无法放入屏幕窗口中。

在屏幕表格文件定义的该屏幕图象大于(又宽又高)当前窗口的尺度。如果当前窗口是
主窗口,它的大小是由使用的终端的尺度设置的。如果当前窗口是用OPEN -
WINDOW打开的,那么你应该指定更多的行或列。检查屏幕表格文件,或者减少屏幕图
象的大小,或者将它作为一个较大窗口的显示。

-3766 用法:SPERFORM [-s] [-d <数据库>;] <文件名>; . . .

这个信息显示执行程序的命令行选项。

-3767 在命令行发现一个未知的选项<选项名>;。

确认你已经输入正确的命令行选项。

-3999 系统内部错误在文件<文件名>;中。

这个错误不应该出现。如果该错误再次出现,请记下全部细节并与Informix技术支持
部门联系。

-4000 内部成员函数不能作为 SHARED 被说明。

这个语句企图用 SHARED 说明这个分类的内部成员之一(分类结构符,或!copy()或
!derive()函数)。你可以说明这些函数以便扩展它们,但是该说明不能指定SHARED。

-4001 基本类型名字"type"不能用作一个分类名字。

这个 CLASS 语句企图用与一个内置的数据类型(如INTEGER)相同的名字说明一个分
类。为你的分类寻找一个不同的名字。

-4002 函数"name"的第<n>;个参数不能转换成其形式参数的类型。

指示的参数表达式或缺省的参数表达式与那个函数参数的说明类型是不一致的。检查
该函数的说明看看期望什么样的类型。

-4004 分类"class-name"的成员"name"不能在这个上下文中被存取。

编译器识别该成员,但该成员的存取控制使得它在语句中不可存取。检查一个
PUBLIC,PRIVATE,或 PROTECTED 说明。当成员常量和成员函数缺省为PUBLIC
时,将成员变量缺省注释为PROTECTED存取。

-4005 你不能再定义私有的基成员函数"name"。

在一个分类说明中的这个 FUNCTION 说明命名一个成员,该成员是从这个分类的一个
基分类继承的。然而,那个继承的名字是作为PRIVATE说明的,因此在这个分类它不
能被覆盖。检查全部基分类的说明;然后为你的函数选择一个对这个分类是唯一的名
字。

-4007 记录成员"name"是未定义的。

这个语句参考record.name。当该变量记录是真正的一个记录时,名字不是它的元件域
之一的名字。寻找记录的定义(它可能在 GLOBALS 文件中)并检验它的域的名字。然后
改正名字的拼写。

-4009 非共享的成员"name"不能被用作缺省值。

在这个函数说明中,一个缺省值表达式参考这个分类的一个正规成员变量的值。这一
操作是不支持的。缺省值表达式可以参考变量,但是,它们必须是在该模块级说明
的,或是共享的分类成员。

-4010 包含文件"pathname"没被发现。

这个 INCLUDE 语句命名一个编译器不能找到的文件。如果使用了一个全路径名,则
该文件不存在。检查全部目录和文件名的拼写。如果只给出一个文件名,那么在当前
目录,在$INFORMIXDIR/incl,或在任何指定一个H编译参数的目录,都找不到那个文
件。或许这些参数之一被遗漏或漏拼。

-4011 分类"name"没被说明。

这个语句参考一个指示名字的分类,但是在该源模块中没有这样的分类被说明到这个
位置。检查名字的拼写。确认,全部说明的包含文件已经被包含了。

-4012 你只能为分类构造符指定一个基本子句。

这个函数说明跟着一个冒号,分类名,和参数表(简单说,就是一个基本子句)。只有
当说明一个分类的构造符(它的函数的名字与分类的名字相同)时使用这个句法,以指
定函数参数到该基本分类的构造符。

-4013 无效的内在成员函数"!name"。

支持的内在成员函数是 !copy(), !derive(),和分类名(构造符)。没用其它的函数可
以用一个前置感叹号说明。检查名字的拼写。如果它不是支持的名字之一,则说明该
函数作为一个正规的成员函数。

-4014 你不能为内部成员函数指定 RETURNING 类型。

一个内在的成员函数的说明包含一个 RETURNING 子句。这是不支持的。编译器定义了
从一个内在的成员函数返回的值。省去该 RETURNING 子句。

-4016 每个分类说明必须有至少一个成员函数。

这个分类说明不包含成员函数。一个分类必须有至少一个成员函数,因为第一个(或唯
一一个)被定义的成员函数的位置也是被定义的分类自己所在位置。如果这个分类无其
它成员,那么说明它的结构符函数。由于结构符被说明,因此它也被定义(尽管该定义
不需要包函除FUNCTION和END FUNCTION以外任何语句除非你希望)。

-4018 在THRU选项中指定的字段不属于相同的表。

这个语句参考相同的表先THRU (或 THROUGH)后;然而,先和后不是那个表中的两个
字段。检查这些字段名字的拼写。确认,编译中的当前数据库(最近的前面的数据库语
句)是正确的。

-4019 在 THRU 选项中指定的字段以相反的次序出现。

这个语句用限制"先 THRU 或 THROUGH 后"参考一些聚合(表,记录,或对象)。然而,
先和后在该聚合没有以那个次序出现;后先于先。检查两个名字的拼写。确认,编译
中的当前数据库(最近的前面的数据库语句)是正确的。

-4020 函数"member"不是分类"class"的一个成员。

这个语句试图直接地或作为object.member()调用class::member()。然而,那个分类
没有这样的成员函数变量。检查成员名字和分类或对象名字的拼写。如果参考是
class::member(),检查分类的说明,看它的成员名字是否拼写正确。如果参考是通
过一个对象,确认该对象是按你想的分类说明的。注释你只能调用一个对象规定的分
类(该分类已被说明)的成员。如果你要调用一个实际分类(该分类在执行时被提出)的
一个成员,用CAST操作符。

-4021 一个分类成员不能命名为"SELF"。

你不能用SELF字母字体作为一个成员变量,成员常量,或成员函数的名字。标识符
SELF是一个由NewEra自动提供的内置的标识符。当一个成员在全局或模块范围中与一
个标识符说明有相同的名字时,你可以参考SELF使你自己的代码更可读,或者当一个
本地实体有相同的名字时存取一个成员。

-4022 保留的关键字"name"不能被用作一个4GL标识符。

关键字不能被用来命名一个函数,报表,变量,或者常量。查阅INFORMIX-4GL
语言参考手册的保留字表。

-4023 一个分类不能从它自己导出。

这个 CLASS 语句宣称该分类是 DERIVED FROM 它自己。这一操作是不支持的。或者撤
消该子句,或者命名另外的基分类。

-4024 识别符"name"用不同的类型多重说明。

在一个给出的范围中,一个给出的名字的多重说明必需是一致的(即,它们必需有相同
的类型)。给出的标识符已经用一个不同的类型说明了。

-4025 函数"name"已经在分类中说明了。

一个有该指定名字的函数已经在当前分类中被说明了。

-4026 成员"name"已经在基分类"class"中定义了。

一个导出分类继承它的基分类的全部成员。你不能增加一个与基分类的成员有相同名
字的成员。

-4029 成员"name"所在的表达式不是一个对象参考或记录类型。

这个语句引用.<名称>;使得<名称>;看上去象一个记录或分类的一个成员名字。然而,小
点前面的表达式既不是一个记录的名字也不是一个对象参考。如果你认为名字是一个
记录的一个成员,检查该记录的定义并确认小点前面的名字的拼写是正确的。如果你
认为名字是一个分类成员,确认小点是在一个产出一个参考正确分类的对象表达式前
面。

-4030 警告: 不能进一步扩展一个扩展的表达式。

一个表达式不能有多重.*后缀。

-4032 警告:THRU成员"name"的结构部分被忽略。

语句包含一个如下格式的THRU短语: rec.first THRU rec.last
正确的格式应为: rec.first THRU last
逻辑是 first THRU last 修改rec。

-4033 基成员名字"name"不能被用作分类名字。

这个语句试图说明一个分类名字,而又指定一个DERIVED FROM子句。成员之一是从被
称为名字的基分类继承的。一个分类的名字不能与它的任何一个成员名字相同,因为
结构符函数必需使用那个名字。检查这个新分类的继承,然后为其选择一个不同的名
字。

-4034 当用"nosql" 开关编译时,不允许SQL语句和two-pass报表。

用"nosql"开关调用编译器,而源代码既包含显示的SQL语句也包含two-pass报表(它调
用SQL语句)。用"nosql"编译产生不包含SQL语句的.c代码(代替.ec代码)是允许的。

-4035 函数"name"不能用不同的存取许可在一个导出分类"class"中被重新定义。

函数"name"的父分类有一个于这个说明不同的存取许可(PRIVATE, PROTECTED,
或 PUBLIC)。

-4036 函数"<名称>;"不能在分类"<类名>;"中重新定义,因为引用类型不同。

函数"<名称>;"的基分类是作为SHARED被定义的,但"<名称>;"不是,或反之。

-4037 多重函数"<名称>;"说明。

虽然可以为一个用户定义的函数说明多个不同的版本,但是不允许对
INFORMIX定义的函数这样作,例如<名称>;。

-4041 再次包含"file"将导致一个无限循环。

这个INCLUDE-AGAIN语句指定一个包含它自己的文件。如果你强制包含它,将导致一个
循环。确认这个文件确实是你要包含的文件。检查该文件的内容。

-4042 说明的形式只能出现于全局(模块)范围中。

对<标识符>;∷<标识符>;的说明只能出现在全局范围内

-4043 不合法的EXTERNAL说明。

这个语句试图说明一个EXTERNAL classname::membername。一个程序不能用一个全局
的EXTERNAL说明来说明一个共享的成员变量。解决的适当方法是包含有一个SHARED成
员的分类描述。

-4044 成员"name"在分类"class"中没有定义。

这个语句试图存取class::name。然而,没有那个分类的变量或常量定义。检查成员名
字和分类或对象名字的拼写。如果参考是class::name,对于它的成员的名字拼写正确
的分类检查分类的说明。如果参考是通过一个对象,确认该对象已按你认为的分类说
明了。

-4045 成员"name"被定义在分类"class"中,但不是作为一个变量或常量。

标识符名字被定义在分类中,但不是作为一个变量或一个常量,而象一个成员函数。
检查成员名字和分类或对象名字的拼写。

-4046 这个非正规函数定义前面出现过正规说明。正规说明失效。

在这个源模块中出现过这个函数的正规说明。这里又出现了非正规函数句法定义。

-4047 混合的非正规和正规函数说明句法。返回类型被忽略。

一个函数说明已经混合了非正规的(FUNCTION程序块)和正规的(FUNCTION原型)句法。
参数表只给出名字,随着VARIABLE语句后定义类型,除继续说明一个RETURNING子句
外,只有在FUNCTION原型说明的方式是可用的。参照INFORMIX-4GL 语言参考手册。

-4048 一个报表的驱动语句在那个报表的主体内是不允许的。

这个语句定义一个记录变量并在说明一个或多个成员时使用了初始表达式。这种情况
是不被支持的。只有在定义一个简单变量时,可以使用一个初始表达式。

-4050 这个正规说明之前函数"name"已被使用从而被非正规地说明了。

对这个函数的调用出现在它的说明之前。只是为了与4GL语言的以前版本兼容,才支持
调用未说明的函数。当编译器遇到调用该函数时,为它假设一个非正规的说明。将该
函数的说明移到源模块的顶部,以便使其先于对它的调用。

-4051 在分类"class"中定义的成员"name",不能作为一个函数。

这个语句试图直接地作为 object.member() 调用class::member()。该分类有那个名
字的一个成员,但它是一个成员变量,不是一个函数。检查该成员名字和分类或对象
名字的拼写。对于分类的成员名拼写正确的,检查该分类的说明。

-4052 标识符"name"没有在全局范围定义。

被使用的常数或变量不是局部的定义,因此编译器假定它是全局的定义,但没有在全
局定义中找到。

-4053 函数"name"已经用一个不同的原型说明了。

在这个FUNCTION语句中描述的函数已经被说明了,且前面的说明与这个说明在参数的
个数或类型上不一致的。检查包含文件中有关这个函数的说明并使那个语句一致。

-4054 函数"name"已经用一个不同的返回类型说明了。

在这个FUNCTION语句中描述的函数已经被说明了,且前面的说明与这个说明在返回值
的个数或类型上不一致。检查包含文件中有关这个函数的说明并使那个语句一致。

-4055 覆盖一个基分类的构造符是不允许的。

在一个CLASS语句中的这个FUNCTION说明指定了一个名字与这个分类名字相同的一个
函数。这一操作是不允许的。检查由这个分类继承的成员的名字并为它的成员函数
选择唯一的名字。

-4057 一个分类不能用PRIVATE内在函数从一个分类导出。

这个语句用一个DERIVED FROM子句说明一个新的分类。然而,指定的基分类有一个或
多个被说明了PRIVATE的内在函数(分类构造符,象!copy()的函数)。一个基分类的内
在函数对于从相同的导出分类函数内部调用必需是可使用的。私有成员不能被这样调
用;因此你不能用私有的内在函数从一个基分类导出一个分类。确认,你指定了正确
的基分类;并检查它的说明。

-4058 有结构符名字的符号不是一个函数。

一个分类名字后跟一个成员变量或常量的名字在这个上下文中是不允许的。

-4059 指定的参数表达式比函数名字说明的调用参数多。

这个语句调用函数名字,但它指定的参数表达式比函数名字说明的调用参数多。
检查参数表的句法。检查函数说明的参数的期望数和类型。

-4060 函数"name"的没有缺省的实际参数比规定的参数少。

这个语句调用函数名字,但它指定的参数表达式比函数名字说明的调用参数少。检查
参数表的句法。检查函数说明的参数的期望数和类型。

-4062 警告:非正式的函数"name"在不同的地方返回(或期望返回)不同的结果数。

在这个来源模块中一个以上的地方调用该函数名字,且函数名字被隐含返回不同个数
的参数。可能这个是正确的;在不同的环境中返回不同的数值写到函数是可能的。检
查是否属于这种情况,以及每种情况将被返回的期望值的数。<TR2:字体-情况-

-4063 函数"name"不返回任何结果。

该语句在指示函数应返回一个或多个值的上下文中调用函数"name"。但是,在模块中
已说明的此函数无RETURNING子句或使用RETURNING VOID。确认,调用的是你预期
的函数,然后检查其说明。

-4064 返回值的类型与函数"name"说明的返回类型不匹配。

函数"name"不是隐含说明的,但已经用一个原型调用了,且当前的调用提供一个不同
的原型。确认,你调用了你预期的函数,然后检查它的近期调用或为它建立一个隐含
的说明。

-4065 对同一个例外类"name"有多个例外处理。

在这个块中,相同的例外分类有两个或多个 ON EXCEPTION 语句。只有一个可以被调
用。检查该语句并确认,每一个都指定正确的例外类,取消或合并冲突的句柄。

-4066 RETURN语句不允许在内部函数的主体中。

这个语句是一个内部成员函数(分类构成符,!copy,等等)的定义的一部分。这些函数
没有显式的返回值;或者更确切地说,它们返回的值是由编译器自动产生的代码产生
的。删除该RETURN语句。

-4067 这个RETURN语句必须提供一个值。

这个RETURN语句没有指定一个返回值,但该函数已经用一个指定不同的VOID的
RETURNING子句说明了。如果你想在没有产生一个值之前中止一个函数,你可以在
END FUNCTION 语句上放置一个标签并使用一个GOTO,或者重新设计该函数的逻辑避免
提前退出。

-4068 函数"class::member"没有被说明成SHARED。

这个语句用双冒号句法调用一个分类成员函数。然而,指定的成员函数没有被说明成
SHARED。只有共享的成员函数可以用这种方式调用;正规成员函数必须通过参考一个
对象进行调用,因为它们需要该对象参考的SELF参考值。检查是否已经指定了你预期
的分类和成员,然后检查那个类的说明。

-4069 被调用成员函数"name"所在的表达式的类型不是一个分类。

这个语句企图既用范围分解(:操作符也用记录成员(.)操作符调用指定的函数。然
而,范围分解(:操作符左边的名字不是一个分类的名字(该名字是分类的一个成
员),或者,记录成员(.)操作符左边的名字不是一个对象的名字(对象的参考名字是
一个成员)。如果你试图通过一个参考对象调用名字,使用对象.名字语法。否则,
确认,你已经指定了你预期的分类和成员名字并检查该类的说明。

-4070 不能设定"SELF"。

这个语句将给函数的隐含名为SELF的参数设定一个新的值。由于SELF的值在任何参考
SELF对象的一个成员中是隐含引用的,因此,不允许对它进行设定。

-4071 不能对常数“<名称>;”赋值。

此语句对<名称>;赋一个新值,但该<名称>;是使用CONSTANT来说明的。常数不占用内存
空间也不能设定新值。检查<名称>;是否是需要使用的标识符。检查它的说明。可能你
想要设定一个模块级的变量名称,但它在上下文中被预先说明为局部常数或者成员常
数。

-4072 不能扩展无成员结构。

这条语句试图进行扩展,但失败。该扩展具有形式<对象>;.*,但所说的对象没有任何
公共成员变量,所以此扩展设置是空的。检查你指定了正确的类和成员。

-4073 在THRU 说明中开始和结束名不是目标记录的成员。

此语句对一些带有“first THRU (或者THROUGH)last"限定的结构(表,记录或对象)
做参考。事实上first 或last不能作为聚合的元素。检查这两个名称的拼写。

-4074 不允许超过两个子串的索引表达式。

子串限定包含一对整型表达式,用逗号分隔和括号包围(例如:name[1,23])。第一个
数值不能大于第二个数,它们必须为正数并且不大于字串长度(或对接收数据类型说
明的长度)。

-4075 简单串表达式必须使用类型CHAR 或 VARCHAR。

编译程序期望一个串表达式,但该表达式既不是CHAR 也不是VARCHAR数据类型。

-4076 CAST 对象的类必须是右参数指定的类的基类。

不能将一个对象放入任意的类中;只能将它放入从它声明的类派生出来的类中。在这
个语句的CAST表达式中,左边的参考对象声明的类不是右边参数命名的类的基类。回
顾表达式以确定已经指定了想要指定的对象(可能需要使用引号将参考对象引起来)
和目标类。

-4077 这个操作对这种类型的操作数是无效的。

操作符不能接受这种类型的操作数。更正其它任何可能报告的错误,并且检验这个操
作符是否定义了这种类型的操作数。然后重新编译程序。

-4078 遗漏操作数,或是不支持的类型。

操作符被指定操作一个无效的类型。可能一个函数返回VOID,一个blob
(TEXT或BYTE),或FOREIGN结果。IS NULL和IS NOT NULL操作符能用于blob
和FOREIGN操作数,并且能从其它相同类型的操作数或NULL接收赋值。

-4079 操作不允许在索引表达式中。

一个象扩展 (.*),COPY,NEW,或THRU这样的操作试图在一个索引表达式中。

-4080 警告:对NULL的操作返回NULL

当编译器正在对表达式进行优化时,发现一个表达式由一个文字值组成,这其中至少
有一个是NULL。

-4081 警告:一个DATATIME表达式不能是负的。

一个"-"操作符作用于一个DATETIME操作数。时间点没有负值。一个间隔可以是负的,
但一个DATETIME不能。检查表达式的句法并修改使它大于或等于零。

-4082 MATCH和LIKE操作的操作数必须是CHAR或-VARCHAR类型。

这个语句使用的MATCH或LIKE操作符带有一个数字的或二进制的参数表达式。在这种情
况下,没有数据类型的自动转换。检查表达式是否写得如你所想,修改它以在与MATCH
或LIKE使用前给字符变量赋值(强制类型转换)。

-4083 警告:外部变量的初始化将被忽略。

这只是一个警告。这个语句说明一个同时具有EXTERNAL关键字和一个初始化的表达
式。初始化一个变量只能在定义它的地方(也就是为它分配内存的地方) 进行。这是
一个说明,不是一个定义,所以初始化被忽略。

-4085 不能输出这个类型的表达式。

语句试图输出一个不能被输出类型的表达式,如FOREIGN,或一个导致调用返回VOID的
函数的表达式。

-4091 不能将一个数组作为一个整体赋值或引用。使用索引指定单独的元素。

编译器试图将一个表达式的结果转换为与另一个表达式的类型相一致,并且它们之中
只有一个是数组。或者二者都必须是数组类型,或者都不能是。

-4092 CLASS和非CLASS类型失配。

编译器试图将一个表达式的结果转换为与另一个表达式的类型相一致,并且它们之中
只有一个是一个CLASS。应该二者都是CLASS类型,或者都不是。

-4093 RECORD和非RECORD类型失配。

编译器试图将一个表达式的结果转换为与另一个表达式的类型相一致,并且它们之中
只有一个是RECORD。或者二者都是RECORD类型,或者都不是。

-4094 相比较的CHAR或VARCHAR类型的长度不一致。

编译器试图在两个串类型之间进行一个比较(象比较函数标识),并且两个串有不同
的边界。

-4095 记录具有不同数目的域或不同类型的域。

在多个域的赋值中被赋的值与接收的记录或对象的域匹配不正确。检查值表达式的句
法;然后回顾接收变量的说明。

-4096 表达式类必须等于或派生于结果类。

语句试图将一个类的值赋予一个不是从原来的类派生的不同的类的对象

-4097 多重说明类"name"。

这个类已经在前面的源模块(可能在一个包含文件)中说明。只允许一次说明。找出
这个类所有的说明并减少到一个。

-4098 扩展的表达式类型必须是类或记录。

这个语句是指<名称>;.*(或使用THRU标志) ;而所指的名称不是说明为一个记录或一个
什么类的对象。检查名称的拼写和它的说明。

-4099 CAST to的类型必须是一个类。

在这个语句中CAST操作符的右边的参数不是一个类的名称。回顾这个语句的句法和拼
写。确定已经包含了所有需要的头文件以说明类。

-4100 常数标识符"name"的不合法的定义。

一个已经建立为一个常数标识符的名称出现在一个新的标识符的说明中。假设,例
如,maxval已经在类x中说明为一个常数,并且后来又有VARIABLE x::maxval INT
说明产生。

-4103 编译器在文件"name"的<行号>;处侦测到一个内部错误。请联系你的系统管理
员或Informix Software, Inc.以报告这个错误。


记录指定的文件名和行号。然后报告这个内部错误。

-4104 一个字段的值的类型与一个变量的类型不匹配。

INITIALIZE语句不能在这个字段值的类型和对应的变量的类型之间建立一个匹配。

-4106 期待一个DATETIME类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个DATETIME表达式以外的
一些东西。

-4107 期待一个INTEGER或SMALLINT类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个INTEGER或SMALLINT表达
式以外的一些东西。

-4108 期待一个DATE类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个DATE表达式以外的一些
东西。

-4109 期待一个DATE或DATETIME类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个DATE或DATETIME表达式
以外的一些东西。

-4110 不能使用超过一个的REPORT TO选项在一个REPROT过程的-OUTPUT节。

在这个OUTPUT节中,语句REPORT TO出现了超过一次。只允许一个这样的指定。移去一
个以外的所有。

-4117 这里期待一个常数表达式。

在这个CONSTANT语句中至少有一个常数表达式的一个值不能在编译时计算。参考
-INFORMIX-4GL Language Reference 中的"Constant -Expressions"以得到何种类型
的操作能被用于常数表达式的信息。

-4118 这种数据类型的表达式不允许在常数表达式中。

指定的表达式不能计算出一个常数。更正报告出的其它的和这个表达式冲突的错误并
重新编译。

-4119 在常数表达式中依赖于时间的函数必须和函数-CONSTANT()一起使用。

在这个CONSTANT语句中的一个常数表达式代表象CURRENT这样的函数,它的值依赖于当
前的时间。这样的函数必须写成-CONSTNAT()函数的参数,返回编译的时间做为它们的
值。(不能在一个常数值中使用运行的时间。)

-4120 对于一个模块,变量"name"可以说明是局部的也可以是外部的,但不能同为
两者。

指定的变量被说明或定义了超过一次。那些说明中至少有一个带有EXTERNAL,并且另
一个定义是一个模块变量(缺少EXTERNAL或GLOBAL)。回顾名称的说明和定义,想着它
们中的一些可能是在包含文件中。如果你期待名称象一个变量私有于这个模块,给它
一个唯一的名称。(允许声明一个变量为EXTERNAL超过一次,并且允许声明它为
EXTERNAL然后定义它为GLOBAL。这二者都能作为包含header的结果产生;并且它们有
好定义的意思。但是一个变量对模块既是外部的又是局部的是冲突的。)

-4121 不能通过一个CALL语句或在一个函数调用表达式中调用报表。

这个语句试图象调用一个函数一样调用一个报表。虽然一个报表具有一个函数定义的
一般格式,但它不能象一个函数那样使用。检查在这个语句中调用的函数名;其中一
个是报表。如果你的意思是发送一行数据到报表,使用OUTPUT TO
REPORT语句。

-4122 分析器限制被超越。尝试减小模块的复杂度或大小。

分析器返回一个NOT句法错误的错误。这可能由于一个分析器的堆栈溢出引起 (太多层
的IF,WHILE嵌套,或类似的) 或分析器运行超出分析器的堆栈空间(模块太大)。尝试
通过拆分复杂函数成多个函数或拆分模块成多个模块以降低代码的复杂度。

-4123 对函数"name"的调用必须有一个RETURNING子句。

函数名称被说明为返回一个结果,所以CALL语句必须提供一个RETURNING子句以接受
结果。

-4125 没有在类分层"name"中定义或说明为一个成员。

指定的元素没有说明,或说明而未定义,为类分层"name"的一个成员。

-4126 期待句柄。

HANDLE语句WITH子句前的标识符没有标识一个句柄。如果句柄的标识符指定一个类,
检查确定句柄被说明为属于那个类;否则,检查确定它被说明属于目标对象说明的
类。

-4127 期待事件。

HANDLE语句WITH子句前的标识符没有标识一个事件。事件必须在说明目标对象的类中
说明或从中继承。

-4128 句柄应该是与对象同一个类,或是其基类的成员。

指定的句柄在程序中说明,但不是与对象同一个类或派生出对象的基类的一个成员,

-4129 期待对象名。

在HANDLE语句中,句柄有一个"name."前缀限定符,但是那个名称是一个未知的对
象。

-4130 句柄不能直接调用。

一个句柄不能是一个显式的CALL语句的对象。调用一个句柄的唯一途径是通过调用或
posting句柄已经被一个HANDLE语句赋值的事件。

-4131 这个非共享的函数调用没有隐含对象。("SELF"在这个上下文中没有定义)。

在这个成员函数调用中没有对象参考的支持。如果这个成员函数的调用是在成员函数
的内部,"self"将是隐含的对象参考。这个调用产生于一个非成员函数体中,所以没
有隐含的对象参考。

-4132 在bass子句中非法的基类名称。

程序说明了一个基类,并且说明了一个其它的类DERIVED FROM那个基类。在派生类的
构造符的定义中,一个基构造符子句指定了一个NOT基类构造符的函数的调用。假设有
一个派生类称为"bread"和一个基类称为"food";如果loaf构造符应该有开始
FUNCTION bread::bread(args1):food(args1)的定义。如果它开始FUNCTION
bread::bread(args1):beverage(args1),这个错误信息就会出现。

论坛徽章:
0
9 [报告]
发表于 2005-05-20 14:57 |只看该作者

贴个Informix错误代码中文解释供大家参考

-4133 只有事件可以被传递。

一个POST语句指定了事件以外的东西。成员函数,句柄,和报表不能被传递。

-4134 类限定在调用一个事件时不允许。

程序指定类了一个跟着一个作用域限定符(:的类名并且这个名称是一个事件。用恰
当的对象名替换这个类名。

-4135 只有共享的类变量能在类的说明之外定义。

一个描述为SHARED的类变量不能在类的说明之外定义。所指定的变量定义是一个在一
个类的说明中没有使用一个SHARED限制符描述的一个变量的完整的定义。

-4136 内部函数<名称>;()有错误标记。

一个!copy()函数的正确标记是FUNCTION !copy(obj this_class),带有一个类型相当
于类的对象的参数。一个!derive()函数正确标记的没有参数,只有一对括号。

-4137 嵌入的C代码只允许在编译的4GL程序中。

一个BEGIN_C和END_C块只能包含于编译的-NewEra 程序中。它在一个解释的
(p-dode)-NewEra程序中是无效的。

-4138 CHAR(*)的数组是不允许的。

ARRAY [ ] OF CHAR(*)不是一个合法的类型。

-4139 常数"name"不能用于它自己的定义。

一个常数在定义之前不能使用。因此,一个常数不能用于它自己的定义。

-4140 编译程序不能继续。

这个错误在一个不可恢复的错误发生在编译程序(即:SEG VIO, BUS ERROR)中时输
出。这种情况可能发生在用户明确地终止编译时。否则,如果这个错误又发生,请记
录全部环境并与Informix 技术支持部联系。

-4141 未知的4GL编译标志"name"将被忽略。

这个错误在用户直接调用NewEra产品的元素,而不通过标准接口时产生。可运行fgle
或fglp被传递了一个不理解的编译开关。

-4142 WHENEVER语句中调用的函数不能要求参数。

程序中WHENEVER语句有WHENEVER条件CALL函数的格式,并且被调用的函数被说明为有
一个参数。在这样的条件下的函数调用甚至不能有括号,使用单独的参数。注意main
有隐含的参数,所以它不能用于这种形式的WHENEVER语句。

-4143 WHENEVER语句中调用的函数不能返回值。

程序中WHENEVER语句有WHENEVER条件CALL函数的格式,并且被调用的函数被说明为有
一个RETURNING子句。在这样的条件下的函数调用不能返回任何值。

-4144 在一个INCLUDEd文件中发现一个语法错误。这个结构在上下文中是不能理解
的。

这是一个一般性信息,它表示不能分析一个被INCLUDE语句引入的文件中的NewEra
语句。在错误产生的地方开始,并在程序中向后寻找其它的错误信息和遗漏的标点,
遗漏的END语句,和其它的错误。通常,一个遗漏的END IF是最大的可能。如果这个
错误的原因是不明显的,集中消灭其它的错误,更多数的错误信息和这个将可能也
消失。

-4145 太多错误,编译器将退出。

侦测到太多编译错误。编译器报告在这点发现这个错误并退出。

-4146 指定了太多的输入文件。

可运行的fgle和fglp只允许一个输入文件。

-4147 这个函数中要求一个RETURN语句。

函数说明为有一个指定为非VOID的RETURNING子句,但没有RETUEN语句出现在函数
体中。

-4148 CHAR(*)类型不允许在SQL语句中。

CHAR(*)类型不允许作一个SQL类型。它不能用于CREATE TABLE, ALTER TABLE等。

-4149 这种类型的表达式在SQL语句中不允许。

一个在SQL语句中提到的标识符是一个象-FOREIGN这样的类型,或它命名了一个对象(
一个类的一个成员)或一个记录。

-4150 第一个参数必须是一个ixRow 对象。

调用内置函数packrow()和unpackrow(),第一个参数必须是ixRow类型。

-4151 构造符不能直接调用。

一个构造符不能使用CALL语句直接调用或在一个函数调用中作为一个函数。构造符应
该使用NEW操作符间接调用。

-4152 THROUGH表达式的非法的开始或结束名称。

在一个SQL语句中的一个THROUGH表达式中使用了非法的表达式。

-4153 警告:带有USING子句的常数表达式在编译时基于环境变量的值被求值。

这个警告在一个CONSTANT的一个值包含一个USING子句时产生。环境变量DBFORMAT
和DBMONEY的设置能影响USING操作的结果。这个警告提醒用户在CONSTANT语句中的
USING子句将在编译时被求值并且可能和其它USING子句在运行时求的值不一致。

-4154 一个CHAR或-VARCHAR类型的常数所允许的最大值是255。

在一个CONSTANT说明或定义中,一个字符类型常数的大小不能超越255。

-4155 警告:只有静态游标允许在WHERE -CURRENT OF 子句中。游标名将被处理为
一个静态游标名。

在UPDATE和DELETE语句中,WHERE CURRENT OF cursor-name子句不能引用一个已经被
说明为动态的游标名。

-4156 警告:循环计数可能溢出。

这个警告在一个FOR循环的上限在那个类型的最大值的STEP值之内时产生。作为一个
例子,假设FOR语句试图运行IX从1到32760带有一个步长值为20,并且IX说明为
SMALLINT;编译器将产生这个警告,因为IX将溢出-没有恰当的循环终值。

-4157 语句太复杂。将其简单化。

这个错误在编译过程中侦测到一个堆栈溢出时产生。在Windows中,堆栈的大小是有限
的。试着降低代码的复杂度。复杂的表达式,如太多的串连接('||'),会消费大量的
堆栈。

-4158 -INFORMIX-4GL FORM和WINDOW语句在这个产品中不支持。对屏幕相互作用使
用Visual Class Library。


编译器遇到一个OPEN FORM或OPEN WINDOW语句。在-NewEra中,这些功能是通过
Visual Class Library处理的。咨询Graphical and Connectivity Reference
Manual。其它的语法错误可能是这个错误附加产生的。替换和VCL调用冲突的语句并重
编译可以消除这些附加的错误。

-4159 下标不支持表达式因为它不是一个字符或数组参考。

这个表达式不能被一个下标限定因为这个表达式既不是一个ARRAY类型也不是CHAR()
类型。

-4160 这个表达式不能用做赋值语句的源。

检测到一个不合法的赋值。例如,abc被说明为一个常数,但你试图赋给它一个值。一
些语句会介入赋值:LET, SELECT ... INTO, OPEN CURSOR ... INTO,
FETCH INTO, FOREACH ... INTO, FOR 重复符(被赋值的重复符), INITIALIZE,
和LOCATE。

这个错误只被NewEra返回。

-4161 这个变量没有被定义为一个记录或对象。

所示的变量和一个星号,或和THRU或THROUGH关键字共同使用。而它尚未定义为一个
记录或对象。检查名称的拼写。如果它是你所要的,定位变量定义找出为什么它没有
象期待的那样定义。这个错误只被NewEra返回。

-4162 在报表中不能返回值。

一个报表不能包含一个RETURN语句因为那将使控制返回调用报表的过程。

-4163 类"class"的内部函数"name"不能被直接调用。

classname::classname()这种格式的构造符,是通过NEW操作符调用的。
classname::!copy()是通过COPY操作符调用的。classname::!derive()是通过NEW
和COPY操作符AS的子句调用的。这个错误只被NewEra返回。

-4164 赋值语句中使用的变量类型太复杂。

这种类型的变量不能用于一个赋值。也就是说,不能对一个BYTE或TEXT变量赋一个值(
除非是无值的NULL)。不能对一个数组变量赋任何值。

-4300 语句中包含太多级的函数调用嵌套。

这个语句调用了嵌套于其它函数调用的参数列表中的函数,并超越了四级。最大级的
支持是四,如以下表达式:Afun(2-Bfun(3+Cfun(4*Dfun(5))))。
重写表达式将最内层的函数调用存储于一个变量中,并在表达式中使用这个变量。

-4309 打印不能在包含与报表headers或尾部的一个循环或CASE语句中完成。

4GL需要知道页的headers和尾部需要多少行空间;否则它无法知道一页允许多少明细
行。既然它不能预测一个循环将要执行多少次,或者一个CASE的哪个分支将被执行,
它禁止在与FIRST PAGE HEADER,PAGE HEADER,和PAGE TRAILER节有关的上下文中使
用PRINT语句。必须重整理代码将PRINT语句放在总被执行的地方。

-4310 文件不能打印到报表的headers或trailer。

4GL需要知道页的headers和trailer需要多少行空间;否则它无法知道一页允许多少明
细行。既然它不能预测一个文件中有多少行,它禁止在一个headers或trailer打印一
个文件。可以在FIRST PAGE HEADER,PAGE HEADER,和PAGE TRAILER的控制块中书写
PRINT语句。但不能在那些控制块中书写PRINT FILE
语句。

-4312 NEED语句只能用于报表中。

NEED n LINES语句用于一个报表以产生一个有条件的跳页。这只能在与一个报表的
FORMAT节有关联的上下文中。检查是否忽略了REPORT语句。

-4313 NEED语句不能用于报表的headers或trailer。

NEED n LINES语句用于一个报表产生了一个有条件的跳页。而在一个FIRST PAGE
HEADER,PAGE HEADER,和PAGE TRAILER节的上下文中是不相关的。如果它确实产生了
一个跳页,一个未结束的循环会跟着发生。

-4314 程序不能在这一点继续或退出一个菜单因为它现在不在一个MENU语句中。

这个CONTINUE或EXIT语句使用了MENU关键字,而它并不定位于一个MENU语句的COMMAND
节中。或是这个语句错,或是一些其它的错误妨碍4GL识别MENU语句。

-4315 程序不能在这一点退出一个FOREACH语句因为它现在不在一个FOREACH语句中。

这个CONTINUE或EXIT语句使用了FOREACH关键字,而它并不定位于一个FOREACH循环
中。或是语句错,或是一些其它的错误妨碍4GL识别FOREACH语句。

-4316 程序不能在这一点退出一个WHILE语句因为它现在不在一个WHILE语句中。

这个CONTINUE或EXIT语句使用了WHILE关键字,而它并不定位于一个WHILE循环中。或
是这个语句错,或是一些其它的错误妨碍4GL识别WHILE语句。

-4317 程序不能在这一点退出一个FOR语句因为它现在不在一个FOR语句中。

这个CONTINUE或EXIT语句使用了FOR关键字,而它并不定位于一个FOR循环中。或是语
句错,或是一些其它的错误妨碍4GL识别FOR语句。

-4318 程序不能在这一点退出一个CASE语句因为它现在不在一个CASE语句中。

这个CONTINUE或EXIT语句使用了CASE关键字,而它并不定位于一个CASE语句中。或是
语句错,或是一些其它的错误妨碍4GL识别CASE语句。

-4319 该变量名符号的定义超过一次。

所示的变量在本次定义之前至少在其它一个DEFINE语句中出现过。如果这个DEFINE在
一个函数或MAIN节中,则前一个也是如此。如果这个DEFINE在任何函数之外,那么前
一个也在任何函数之外;可能存在于GLOBALS语句包含的文件中。

-4320 该表名符号不是指定数据库的表的名称。

该名称的表未在上一个DATABASE语句命名的数据库中出现。可能在程序中拼错了名
称,或在程序上次编译的时候被漏掉或改名。

-4321 数组最大只能有三维。

在数组名称之后有超过三维的下标。4GL只支持三维以下的数组。检查下标的句法;可
能错误产生于插入了多余的逗号。

-4322 字段名符号不是指定数据库的字段名称。

前面的语句表明该名称的字段是在上个DATABASE语句中命名的数据库的某个表的一部
分。该表存在,但是表中无该字段。检查字段名称的拼法,如确为所要的,那么或是
表已改变,或是不能存取所要的数据库。

-4323 该变量类型过于复杂不能用于赋值语句。

该名称的变量不是一个记录或数组。4GL不支持对整个记录或数组的赋值。在记录的情
况下,必须给单个记录元件赋值,或使用星号标记将一组元件赋给另一组元件。在数
组的情况下,必须使用下标指定一个单独的数组元素。该错误不由高于版本4.1的任何
版本的4GL产生。

-4324 该变量不是字符类型,不能用来容纳连接的结果。

该语句试图连接两个以上的字符串(使用逗号作为连接操作符)并将结果赋给该变
量。不幸的是,这不是一个字符变量。4GL在这种情况下不做自动的字符类型转换。
将连接串赋给字符变量,如果需要将结果作为数值处理,可将串整个地赋给数值
变量。

-4325 在该记录赋值语句中的来源和目的记录在类型/或长度上不匹配。

该语句使用星号标记将该记录的全部元件赋给另一个记录的对应元件。但是,元件不
对应。注意4GL严格地按位置匹配记录元件,第一个对第一个,第二个对第二个,依此
类推;并不按照名称作匹配。如果来源和目的地记录元件个数和类型不同,必须给每
个元件各写一个赋值语句。

-4326 一个NULL值不能用于子串。

NULL值是个整值,它只与完整的变量相关。可以将NULL设定给这个变量(删掉子串标
记)使整个变量包含一个null串。另一种方法,可以给子串设定一个空格使之成为空
白。删除一个串的一部分的唯一方法是写一个表达式提取作为限定的开头和结尾的子
串,然后连接它们。

-4327 该变量不是INTEGER或SMALLINT类型,不能用于循环索引。

在FOR循环中的索引变量必须是一个整型。指定另外一个变量或重新定义该名称的变
量。

-4328 该函数的类型作为一个函数返回值的目标过于复杂。

该名称的变量是一个记录或数组。函数只能返回简单变量或一个简单变量的列表。在
记录这种情况,可使用星号或THRU标号作为速记来指定一个元件列表。

-4329 该变量不是一个记录。只有记录变量可用.*或THROUGH速记扩展。

在所示的名称中使用了圆点-星号(.*)或THRU(或THROUGH)字,它们是指定记录元件
列表的速记符号。不幸的是,变量未定义为记录。确保指定了一个正确的变量并定义
为记录。

-4330 不能从主程序中返回该值。

尽管在主程序中RETURN和EXIT PROGRAM相同,但它不能包括一个返回值。该错误由
NewEra 程序产生。

-4333 该名称已有不同个数参数的调用。

在前面的程序中已有对同一函数或事件的调用,然而其参数表中参数个数不同。这些
调用中至少有一个是错误的。检查FUNCTION或EVENT语句找到正确的参数名称。然后
检查对它的全部调用是否都正确书写。在函数顶端出现的该错误与错误-4336有关,
首先解决错误-4336,错误-4333通常就消失了。该错误由NewEra 程序产生。

-4334 用于该语句的变量名在它当前的屏幕表格中过于复杂。

4GL使用“过于复杂”的意思是“有过多的元件部分”。在该语句中只能使用简单变量
(含有单一元件的变量)。如果变量名是一个数组,必须提供下标以选择一个元素。如
果是一个记录,必须选择它的一个元件。(但是,如果该语句允许一个变量列表,如
在INITIALIZE语句中,可以使用星号或THRU标号将记录名转换成一元件列表)。

-4335 符号<域名>;不是记录的一个元素。

该语句参考了record.field。记录变量确是一个记录,但<域名>;不是它的成员之一。
寻找记录的定义(可能在GLOBALS文件中),并检验它的域名称。改正域的拼法。

-4336 该变量名的参数未在函数和报表中定义。

该变量名出现在该函数的FUNCTION语句的参数列表中。但是,它未在函数的DEFINE语
句中出现。全部参数在使用之前都必须在函数中定义。可能写了DEFINE
语句但变量名的拼法与使用时不一致。

-4338 该变量名已定义为参数。

所示名称出现在FUNCTION语句的参数列表中并且在函数主体中至少有两个DEFINE
语句。只允许在DEFINE语句中出现一次。

-4339 4GL运行的数据空间内存不够。

该程序过长不能编译。将它分成多个模块分别编译。

-4340 用于表达式的变量类型过于复杂。

NewEra 使用“过于复杂”的意思是“有过多的元件部分”。在表达式中只能使用简单
变量(即只有单个元件)。如果所示变量是个数组,必须提供一个下标选择一个元素。
如果是一个记录或对象,必须选择它的一个元件。该错误由NewEra
程序产生。

-4341 聚合函数只允许在报表和SELECT语句中。

类似SUM、AVG和MAX的聚合函数只能在SQL语句和某些用于报表主体上下文中的语句中
出现。在程序语句的普通表达式中不支持它们。可以写一些专用函数在数据上形成该
聚合函数;但是必须使用SUM、AVG和MAX这些保留字之外的名称。

-4342 PAGENO 和 LINENO 只允许用于报表。

这些函数只在报表函数(在一个REPORT语句后)主体中是相关的。只在产生报表的代
码之中,当前页或行的意思才是有意义的。可以通过全局变量使它们在报表之外有
用。例如,可以将类似这样的语句放在PAGE HEADER 控制块中:

LET CURR_PAGE = PAGENO

这样就将当前页设定给一个全局变量(该例中称为CURR_PAGE),代码可以在报表函数
之外检测到它。

-4343 下标不能用于表达式,因为它不是一个字符或数组的参考。

可以在一个能计算出数组的表达式后跟一个下标表达式(包含于方括号中的两个整型
表达式,被一个逗号分开)。可以在一个字符表达式后指定一个子串(方括号中的两
个整型表达式)。但是,在该语句中,带方括号的表达式跟在一个既不是字符也不是
数组的变量后面。检查语句中的标点和变量的说明。包含这段文字的错误-4343由
4.1版的4GL产生。

-4343 下标不能应用在变量上,因为它不是一个字符或数组变量。

可以在数组变数名称的表达式后跟一个下标表达式(包括方括号中的一个或三个
数字)。你可以在数据类型CHAR或VARCHAR的变数名称之後写子串式(方括号括住二个
数字)。然而<变数名>;并非这些情形。它若不是你所要的变数,即是它的定义错误。
包含这段文字的错误 -4343 由4.1版本的 4GL产生。

-4344 该变量不能使用字串操作因为它不是一个字符变量。

该语句包含一个标识符后跟一个子串表达式(在方括号内的两个数)。但是,该变量
非CHAR或VARCHAR数据类型。如果确是要得到一个子串,那么可能是变量名错或变量未
正确定义。如果要作为数组下标,那么也是如此。

-4345 该变量已使用了一个子串。

所示的名称后面跟了两个子串表达式(在方括号中的两个数)。这是无效的。可能在
编辑另一个变量名称时,偶然删掉了一些标点。或者意为一个字符项后跟一个选择元
素子串的两维数组,问题在于变量名未被定义为一个数组。

-4346 下标只能包含INTERGER或SMALLINT表达式。

数组下标是整型值,只有整型变量可用来形成它们。该语句包含了一个使用了FLOAT、
CHAR或其它类型的变量的下标。在下标表达式中无自动的数据类型转换。检查语句中
的下标表达式;可能只是简单地键入了错误的变量名。如果并非如此,必须修改程序
使数组下标只存储于整型变量中(你可能希望允许一个带有0缩放因子的DECIMAL值,
但情况不是这样的)。

-4347 该变量不是记录。它不能引用记录元素。

在该语句中变量名后跟一个圆点和另一个变量名。这种方式用于参考一个记录的元
件;但是,该变量名未被定义为一个记录。可能写错了变量名或该变量名未按要求定
义。

-4348 这种类型的聚合必须用于表达式,而不是 '*'。只有-PERCENT 和COUNT聚合
可使用 '*'。

在这种语句中的聚合函数是类似于MIN和SUM的类型之一,必须用于指定的字段,或包
含指定字段的表达式。在一个SQL语句中的星号标记意思是“整行”。对于聚合函数来
说,它仅在计算整行时才是有用的。

-4349 PERCENT和COUNT报表聚合不能用在表达式中。

这些聚合简单地计算整个行而不管行的内容。COUNT返回行的计算,PERCENT返回行作
为整个表的百分比的计算。这些函数唯一允许的参数 '*' 的意思是 "一个整行"。它
们不能用于指定的字段或包含指定字段的表达式。

-4350 此时程序不能继续一个FOR循环因为它不在FOR循环中。

CONTINUE FOR语句不在FOR语句和与其匹配的END FOR语句中。也许FOR语句被偶然删掉
了,或者,改成了其它类型的循环,例如FOREACH或WHILE。

-4351 此时程序不能继续一个WHILE循环因为它不在WHILE循环中。

CONTINUE WHILE语句不在WHILE语句和与其匹配的END WHILE 语句中。也许WHILE
语句被偶然删掉了,或者,改成了其它类型的循环,例如FOREACH或FOR。

-4352 此时程序不能继续一个FOREACH循环因为它不在FOREACH循环中。

CONTINUE FOREACH语句不在FOREACH语句和与其匹配的END FOREACH语句中。也许
FOREACH语句被偶然删掉了,或者,改成了其它类型的循环,例如WHILE或FOR。

-4353 这种为报表指定的ORDER BY 或GROUP项的类型对排序无效。

数据库服务器不支持在TEXT或BYTE类型的字段上进行比较的功能。结果,这种类型
的字段不能用于行的排序或成组。使用其它字段(通常主要是表的键)用于排序或
成组。

-4354 聚合函数不能和blob变量一起使用。

该语句将一个聚合函数,例如SUM,赋给一个定义为BYTE或TEXT的变量。这种变量
不在聚合函数的定义域中。修改该语句用的函数的使用,明确是否要将其赋给所要的
变量。

-4356 在该报表中一个页header已经指定。

在一个报表中只允许一个 PAGE HEADER 控制块。用于该控制块的语句必须适合报表的
全部页(除非最前面的页,可在该页写一个FIRST PAGE HEADER块)。找到其它的
PAGE HEADER控制块,将它们的语句合并成一个块。

-4357 在该报表中一个页trailer已经指定。

在一个报表中只允许一个 PAGE TRAILER 控制块。用于该控制块的语句必须适合报表
的全部页。找到其它的PAGE TRAILER控制块,将它们的语句合并成一个块。

-4358 在该报表中第一个header已经指定。

在一个报表中只允许一个FIRST PAGE HEADER控制块。(当然,也只有一个第一页)。
找到其它的FIRST PAGE HEADER控制块,将它们的语句合并成一个块。

-4359 一个ON EVERY ROW 子句已在该表中指定。

在一个报表中只允许一个ON EVERY ROW控制块。找到其它的ON EVERY ROW 控制块,
将它们的语句合并成一个块。

-4360 一个ON LAST ROW 子句已在该表中指定。

在一个报表中只允许一个ON LAST ROW控制块。找到其它的ON LAST ROW 控制块,将它
们的语句合并成一个块。

-4361 组聚合只能在 AFTER GROUP 子句中产生。

用于行组的聚合函数(GROUP COUNT,GROUP PERCENT, GROUP SUM,GROUP AVG, GROUP
MIN, and GROUP MAX) 只能用在报表中一个完整的组处理完成之时,意即,在AFTER
GROUP控制块中。保证AFTER GROUP语句存在且能被识别。如果需要另一时间的聚合组
的值(例如在一个PAGE TRAILER控制块中),可以在AFTER GROUP
控制块中用LET语句将其保存在一个全局变量中。

-4362 在一个header和trailer中报表不能跳到页头。

当SKIP TO TOP OF PAGE执行时,页尾子句必须跟在页header子句之后执行(为了显示
固定的页尾材料)。如果在header或页尾子句中允许该语句,可能产生死循环。

-4363 在一个header和尾部的循环中报表不能跳行。

4GL需要知道有多少空行将插入页header和页尾中(否则每页中允许多少行的细节是未
知的)。由于一个循环将执行多少次是无法预知的,因此在PAGE HEADER,
PAGE TRAILER, 以及 FIRST PAGE HEADER 节中的循环之中SKIP语句是禁止使用的。

-4364 初始化/缺省的表达式类型与变量/参数的类型定义不匹配。

指定的变量的初始化表达式不能计算出一个数据类型与其说明的类型相匹配。重写表
达式使之与变量的说明类型相符合。

-4365 中断或退出的延缓只能在主程序中执行。

语句DEFER INTERRUPT 和 DEFER QUIT只能在程序的主要节中出现一次。它们可能在
程序中各出现一次且仅一次。

-4366 变量数与该语句中的数据库字段数不匹配。

必须给语句中声明的每一个字段提供一个变量以便从字段接收或供给数据。可能字段
名和变量名之间比较含糊。当一个程序变量与一个数据库字段重名时,可以强制4GL用
一个 @字符或用它的表名做前缀使用数据库字段。

-4367 中断已经在主程序中被延缓了一次。每个主程序只能延缓中断一次。

语句DEFER INTERRUPT 和 DEFER QUIT只能在程序的主要节中出现一次。它们只能在
程序中各出现一次。

-4368 退出已经在主程序中被延缓了一次。每个主程序只能延缓退出一次。

语句DEFER INTERRUPT 和 DEFER QUIT只能在程序的主要节中出现一次。它们只能在
程序中各出现一次。

-4369 该变量名符号不表示一个已定义的变量。

所示的名称出现之处期待为一个变量,但是它与上下文中使用的DEFINE语句中的任何
变量名称不匹配。检查该名称的拼法,如确为所需要的,则返回寻找它为何未做定
义。可能GLOBALS语句从源模块中忽略了,或它命名了一个非法的文件。也可能这段
代码从另外的函数或模块中拷贝而来,但是DEFINE语句没有随之拷来。

-4370 该变量不能用于确认。

VALIDATE语句只在单个简单变量上操作;不能接受记录或数组。如果已命名了一个记
录,可使用星号标记或THRU标记作为记录的显示字段元件列表的速记。然而,如果一
个记录元件本身是记录,则必须单独地列出每个元件。

-4371 游标在一个程序模块中必须唯一地说明。

在DECLARE cname CURSOR 语句中的标识符cname只能在源文件中的一个DECLARE
语句中使用。甚至当该DECLARE语句只在一个函数内部出现时也是真的如此。尽管一个
与DEFINE语句一起产生的程序变量是该函数的本地变量,但是在函数内部的游标对整
个模块来说是全局的。

-4372 带该游标名称的游标在本程序模块中尚未说明。必须在使用它之前说明。

在所示的名称出现之处期待为一个已说明的游标名或一个已准备好的语句;但是在程
序此处这个名称的游标(或语句)未被说明(或准备好)。检查该名称的拼法。如确
为所要的,回顾该程序查看是否未说明它-可能所需的DECLARE语句在一个GLOBALS
文件中,而该文件未被包含。

-4373 在该行、该字符处发现一个语法错误。在它的上下文中不能理解该构造。

这是个一般信息,表示不能分析一个4GL语句。所示的行数和字符数表示分析器侦测到
错误的点。但是,这往往不是存在错误的点。从此处开始在程序中回溯,寻找其它的
错误信息和遗漏的标点、END语句及其它的错误。如果该行是END FUNCTION,END MAIN
或END REPORT,一个可能的原因是,可能在很多行以前就缺少另一个END。通常原因是
遗漏了一个ENDIF。如果错误原因不太明显,请集中注意其它更特殊的错误信息,往往
在其它错误改正之后该错误也消失了。

-4374 该语句类型只能用于一个MENU语句。

举例来说这类语句中的SHOW OPTION语句,只能在一个MENU语句的上下文中有意义。回
顾附近的程序查看是否将一个END MENU语句放置错误。如果想要在显示之前设置一个
菜单的外貌,在MENU的作用域中使用一个BEFORE MENU块。

-4375 页的长度太短不能覆盖指定页的header和尾的长度。

检查OUTPUT节中以及任何HEADER和TRAILER子句中的语句。这些语句使用的总行数
必须比指定的页长足够的小,以使可打印比较明细的行。

-4376 不能产生待写的临时文件。

检查在UNIX系统上你的帐户是否在/tmp 目录上有产生文件的许可,或如果DBTEMP
环境变量中指定的目录名与之不同,是否有产生文件的许可。查找从操作系统来的其
它更显式的错误信息。可能是磁盘已满或已达到了所能打开的文件数的最大值。

-4377 不能建立或打开该文件名的输出文件。

在UNIX上,检查你的帐户是否在文件将要产生的目录上具有建立文件的许可。查找从
操作系统来的其它更显式的错误信息。可能是磁盘已满或已达到了所能打开的文件数
的最大值。

-4378 未指定输入文件。

从命令行调用C代码或p-code编译程序,但为未指定已编辑的源文件名。重复该命令,
指定一个源文件名。

-4379 不能打开输入文件<文件名>;。

输入了不存在的文件,在UNIX上,你的帐户不许可读取该文件。可能文件名有拼写错
误,或指定的文件路径有错误。

-4380 不能产生列表文件<文件名>;。

检查指定的前导文件的目录路径是否正确,在UNIX系统上检查你的帐户是否许可在该
路径上建立文件。检查从操作系统上来的其它更显式的错误信息。可能磁盘已满或达
到了允许打开文件数的最大值。

-4381 输入文件<文件名>;有个无效的扩展名。文件名必须以.4gl作为扩展名。

当键入一个源程序名时不必输入文件扩展名或.4gl字根。然而,如果键入文件字根则
必须是.4gl;其它则不允许。如果键入非法的字根,去掉字根重新输入命令。如果文
件确实有一个不同的字根,必须将它改变。

-4382 不能扩充有数组成员的结构。

除了在LET语句,".*"及 THROUGH符号不可用於扩充有数组成员的记录。
除非是在LET语句,否则".*"及 THROUGH符号不可用於扩充有数组成员的记录。
错误-4382仅被NewEra返出。

-4382 包含数组类型元素的记录变量不能被 ".*" 或THROUGH 速记引用,
或用作一个函数参数。

可以定义一个以数组为元件之一的记录,但是必须用其全名record.part[n]列出该元
件。星号或THRU标记只能作为一个记录元件名称列表的速记符号。它不能在数组元件
名后产生一个方括号下标。

包含数组元件的记录不能作为参数给一个函数,但是可以用数组元件本身作为函数的
参数,只要以record.part的形式拼出它的名称即可。错误 -4382仅由NewEra
发出。

-4383 元素名1和元素名2不属于同一父记录。

所示的两个名称所用之处要求一个记录的两个元件;然而它们不是同一记录的元件。
检查两个名称的拼法,如它们确为所需要的,回到记录定义之处,查看它为何没有将
这两个名称作为元件字段引入。

-4384 符号<名称>;不表示任何记录元素。

所示名称使用之处4GL期望为记录元件名称。检查名称的拼法。如果确为所需要的,回
到记录变量定义处,查看它为何未作为一个元件字段引入。

-4385 报表聚合不能嵌套。

聚合函数不能嵌套,主要因为在外部聚合积累的同时内部聚合值是不知道的。仅参考
字段和字段上简单表达式来重写聚合表达式。在AFTER GROUP OF 子句,你可以从一组
程序变量行中保存聚合值,以便用它计算后来组上的聚合。

-4386 在该报表中有太多的ORDER BY 字段。最大数目为该数。

排序的字段的数目存在一个极限。你必须重新设计该报表以便不超出<数字>;字段的排
序。或者在传递数据到报表前排序该数据,并且在报表主体的ORDER BY 语句中指定
EXTERNAL关键字。一般来说,由数据库服务器产生正确次序的行更为有效。(在产生行
的游标中使用SELECT...ORDER BY)。

-4387 右侧的空白必须大于左侧的空白。

如果报表右侧的空白不大于左侧的空白,每行将没有空间给数据。检查在OUTPUT
节中的两个MARGIN使之成为合理值。

-4388 对每一个报表输入参数,只允许一个BEFORE GROUP OF 子句和一个AFTER
GROUP OF 子句。


报表试图为单一的报表参数定义第二个BEFORE GROUP OF 或AFTER GROUP OF 块。只允
许有一个控制块。找出关于该参数的全部块组合成一个语句。

-4389 报表中的IF语句有太多级嵌套。

IF 语句的嵌套超过了五级。可能ENDIF语句被忽略。否则,必须修改报表逻辑使嵌套
不太深。

-4390 每个MENU语句只允许有一个BEFORE MENU 子句。

在MENU中仅可能有一个BEFORE块。确保你的MENU语句正确使用END MENU 标定范围。组
合所有准备好的代码成为一个单一的BEFORE MENU 块。
该错误仅被4GL 版本4.1返回。

-4391 当 执行 INPUT BY NAME 或 INPUT ARRAY时,显示字段名只能被显示字段
名后缀指定。屏幕数组和屏幕记录元素是不允许的。

只有单一屏幕表格显示字段的名称可和一个 BEFORE或 AFTER子句一起使用。这个显
示字段的名称在屏幕表格定义的ATTRIBUTES 节中定义;它通常与数据库字段的名称
相同。下面是一些 ATTRIBUTES节中的例子:

atag=customer.customer_num,noentry;
tag2=formonly.total,format="######.##";

这些显示字段的名称分别是customer_num和 total。

在4GL语句中存在一个问题,以另一个名称和一个圆点作为一个名称的前缀,这条句
法用于指定屏幕记录或屏幕数组的元件,或不同表格中相同名称的数据库字段,但此
处该句法不适用。

-4392 4GL 编译器运行的数据空间内存不够用来容纳4GL程序符号。如果程序模块非
常大,可以把它分割成分离的模块来改变这种情况。

重新组织程序来源成为一组可独立编译的模块。另外,可修改程序以便只需更少的唯
一符号,例如使用数组来代替许多相似的变量。这种错误也同CONSTRUCT
语句相关。如果一个CONSTSRUCT 覆盖很大数量的显示字段,可移动该语句到一个
函数并且把此函数放置在不同的源模块以使程序不做其它修改。

-4393 MENU 语句超越了选项的最大数。

每个菜单中的最大选项数为25个。确保END MENU语句不被忽略,它连接两个菜单。
如果菜单确为所需要的,你必须修改程序使它不超越极限,例如建立一个菜单的
级联。

-4394 警告:在非正式函数头中的正式参数不能有初始值。该参数的初始值将被忽
略。如果要使用该值作为隐含变量,应使用正式函数头来指定此缺省值。

尽管在正式(原型函数风格〕定义中参数可以有初始值,而非正式函数定义是不可以
的,该参数的初始值将被忽略。如果要使用该值作为缺省参数,应使用带函数原型的
正式定义格式来指定此缺省值。这个错误仅被NewEra 返回。

-4395 对一个数据库字段名指定了过多的下标。

在该语句中数据库字段的名称后跟了一个方括号,括号中有一些数字。带方括号的数
据库字段的唯一有效的用法是从一个字符字段中选定一个子串。但是,在这种用法中
必须准确地写两个数字,即子串的开始和结束字母的下标。这里使用了多于两个的数
字,检查并更正标点。

-4396 带有该行数的MENU说明无结束。

4GL不能标识一个END MENU语句去匹配处于该行数的MENU语句。从该行开始找下去直到
寻找到应该是结束语句的地方,加入结束语句。

-4397 行<行号>;中的IF语句无结束。

4GL不能标识一个END IF 语句去匹配处于该行数的IF语句。从该行开始干下找直到寻
找到应该是结束语句的地方,加入结束语句。

-4398 行<行号>;中的CASE语句无结束。

4GL不能标识一个END CASE语句去匹配处于该行数的CASE语句。从该行开始找下去直到
寻找到应该是结束语句的地方,加入结束语句。

-4399 行<行号>;中的WHILE语句无结束。

4GL不能标识一个END WHILE 语句去匹配处于该行数的WHILE语句。从该行开始找下去
直到寻找到应该是结束语句的地方,加入结束语句。

-4400 行<行号>;中的FOR语句无结束。

4GL不能标识一个END FOR 语句去匹配处于该行数的FOR语句。从该行开始干找去直到
寻找到应该是结束语句的地方,加入结束语句。

-4401 一个连接操作符产生的串过长,不能放入目标串变量中。

该语句连接两个以上的字符串并将结果存储于另一个类型为CHAR或VARCHAR的变量中,
但是,连接的结果超过了接收变量的长度。如果超过的长度是结尾的空格,可使用
CLIPPED函数禁止结尾空格进入合并的结果中。否则,必须定义接收变量的长度至少为
输入变量的长度之和。

-4402 在该类型语句中,下标只用于数组变量以从中选定单独的数组元素。

该语句包括一个后跟方括号的名称,但是该名称不是一个数组变量。检查语句的标点
并且拼写全部的名称。带下标的名称一定是数组。如果想在语句中使用一个字符子
串,必须修改程序。

-4403 该名称的变量的维数与下标不匹配。

在该语句中,带有这个名称的数组其下标超过了定义的维数。检查下标的标点。如果
是所要的,回顾该变量名被定义处的DEFINE语句。

-4405 函数已超越了最大允许的参数个数。

这条信息不会被当前任何Informix产品返回。如果发生该错误,请记录全部环境并与
Informix 技术支持部联系。

-4406 在上行中有一个不匹配的引号。

源程序行中含有奇数个引号。从左至右检查该行,保证全部文字字符串以一个引号开
始和结束。所有文字串必须在同一逻辑行开始和结束。有两种方法写出一个长的文字
串,首先,可以在行的最后用一反斜线以退出行结束符(然而,一个单独的引用串的
总长度的最大值固定为80个字符)。第二,在DISPLAY和LET语句中,可用一逗号连接
较短的文字串。下面有两个例子:

DISPLAY "abcdefghijklmnopqrstuvwxyz"
DISPLAY "abcdefghijkl",
"mnopqrstuvwxyz"

显示的字母中均未嵌入空白符。

-4407 在上行中有一个不可打印的字符。

该源程序行中包含一个不正规的字符。4GL认为源程序可能被毁坏了。编辑文件并删除
坏字符。如果用编辑器不能看见或无法选定该字符,就不得不删除该行并重新键入。

-4408 在上行中有一个过长的引用串。

文字字符串的长度极限是80个字符。但是,在DISPLAY和LET语句中可使用一个逗号连
接较短的字符串。例子可见信息-4406。

-4409 在上行中有一个无效的字符。

该源程序行中包含非可打印文本或不正常的空白。删去无效字符(该字符在正常编辑
器下可能是不可见的)。如果在编辑器中看不见或无法选定无效的字符,只能删除该
行再重新键入。

-4410 在前面的行中有一个过大或过小的数值常数。

该行中有个数值常数不能处理。检查全部文字数的数字和标点;例如,确信你没有键
入一个字母作为数字。任何一个数都不能超越50个数字。按照上下文,数可能被限制
在以下三个范围之一:

SMALLINT: 绝对值不超越 32,767
INTEGER: 绝对值不超越2,147,483,647
DECIMAL: 绝对值从10-130到10140

-4411 在上行中有一个过长的字母数字标识符。

任何标识符不能超越50个字符。检查该标识符的拼写和全部标识符的标点(可能两个
名称连在一起了)。

-4412 从RUN命令来的值只能被返回给INTERGER或SMALLINT变量。

RUN命令只能从一个执行程序中返回整型的返回码。在这种情况下无自动数据转换;结
果必须被指定为一个整型变量。

-4413 标签<标签名称>;已经在函数/报表中定义过。

标号出现在两个以上的LABEL语句中。检查标号名,如它确为所要的,搜索一遍该函
数、报表、句柄或主程序的其它LABEL语句找到重名的那些,将它们改为其它名称。
该错误只能被NewEra返回。

-4413 标签名已在主程序或函数中定义。

标签出现在两个以上的LABEL语句中。检查标签名,如它确为所要的,搜索一遍该函数
或主程序的其它LABEL语句找到重名的那些,将它们改为其它名称。该错误只能被4GL
返回。

-4414 标签<标签名称>;已经使用但从未定义在函数/报表中。

一个 GOTO 或 WHENEVER 语句指向所带的标号,但在当前的函数、报表、句柄或
主程序中没有相应的LABEL语句。如果该标号确是所要的,找到定义它的LABEL语句
并做检查。不能用GOTO转移出一个程序;标号必须在使用它的同一函数主体中做
定义。这个错误只能被NewEra返回。

-4414 使用了一个标号名称但未在上面的主程序或函数中定义该标号。

一个 GOTO 或 WHENEVER 语句指向所带的标号,但在当前的函数、报表、句柄或
主程序中没有相应的LABEL语句。如果该标号确是所要的,找到定义它的LABEL语句
并做检查。不能用GOTO转移出一个函数;标号必须在使用它的同一函数主体中做
定义。这个错误只能被4GL返回。

-4415 在一个报表中指定的ORDER BY或GROUP项必须是一个报表参数。

用于ORDER BY ,AFTER GROUP OF,或BEFORE GROUP OF语句中的名称必须也在REPORT
语句的参数列表中。不可能基于一个全局变量或其它表达式排次序或组成组。检查语
句中名称的拼法将它们与REPORT语句相比较。

-4416 在validation串中有一个错误: "%s"。

在syscoval表中更改合适的DEFAULT 或INCLUDE值。

-4417 这种语句类型只能用于报表。

象PRINT、SKIP、NEED之类的语句只能在一个报表函数的主体中有意义,此时存在一个
隐含的报表列表去接收输出。

-4418 用于INPUT ARRAY 或DISPLAY ARRAY语句的变量必须为数组。

跟在词DISPLAY ARRAY 或INPUT ARRAY后的名称必须是记录的一个数组名。检查名称的
拼法,如果它是所要求的,找到并检查DEFINE语句看为何它不是一个数组。(如果要
显示或输入一个简单变量或一个数组的单一元素,使用DISPLAY 或
INPUT语句)

-4419 用在CONSTRUCT语句中的变量必须为字符变量。

跟在词CONSTRUCT后面的名称必须是定义为CHARACTER或VARCHAR的变量的名称。因为接
收到的串可能很长,因此它必须是个长变量。检查名称的拼法,如果它是所要求的,
找到并检查DEFINE语句看为何它不是字符类型。

-4420 在header或trailer子句的一个IF-THEN-ELSE语句的IF部分和ELSE部分中打印
的行数相等。

4GL需要知道填入header和尾部部分的行数(否则它不知道放入该页的行数的明细情
况)。由于它不知道IF语句的哪一部分将被执行,它要求两者产生相同行数的输出。

-4421 不能在另一个INPUT语句或PROMPT语句中使用INPUT语句,即使该语句被
包括在一个条件或循环语句中。

可以从另一个INPUT语句、或从一个PROMPT语句中执行INPUT语句,但是为了做到这一
点必须将INPUT语句放入一个函数中然后调用该函数。不能在另一个INPUT语句中嵌入
INPUT语句的文本。

-4422 不可以在另一个INPUT语句中使用CONSTRUCT语句。包括当CONSTRUCT被包括在
一个条件语句或一个循环语句中的情况。必须调用一个函数执行CONSTRUCT
语句。

可以在一个INPUT语句中执行CONSTRUCT语句,但是为了做到这一点,必须将CONSTRUCT
语句放入一个函数然后调用该函数。不能在INPUT语句中嵌入CONSTRUCT
语句的文本。

-4423 用于DISPLAY语句的CLIPPED和USING选项当显示到一个屏幕表格的
显示字段时不能使用。

CLIPPED和USING关键字不能用于DISPLAY TO和DISPLAY BY NAME语句。一个屏幕表格的
显示字段的显示格式由显示字段的属性控制,这些属性在屏幕表格文件中指定。在一
个显示字段中结尾的空格不显示。为了得到USING的效果,编辑屏幕表格文件并添加
USING属性给一个或多个显示字段。

-4424 变量<变量名称>;尚未定义成记录或对象。

表示的变量已与一个星号、或THRU关键字、THROUGH关键字合用。但是它未被定义为
一个记录或对象。检查名称的拼法,如果它确是你所要的,定位于变量定义的地方,
找出它为何未象所期望的那样定义这个错误只由NewEra传回。

-4424 变量<变量名称>;未被定义为一个记录。

表示的变量已与一个星号、或THRU关键字、THROUGH关键字合用。但是它未被定义
为一个记录。检查名称的拼法,如果它确是你所要的,定位于变量定义的地方,找出
它为何未定义为记录。这个错误只能被4GL返回。

-4425 变量<变量名>;未被定义为LIKE表<表名>;。

命名的变量用于一个UPDATE语句的SET子语中。尽管如此,它未被定义为LIKE被修改
的表名。结果,4GL不能加入一个带表字段的记录元件。可以改变变量的定义,或
重写UPDATE语句以表示字段名称和记录元件之间显式的关系。

-4426 PRINT语句只能用于报表中。如果你希望做无屏幕定位的打印,使用无任何显
示字段或屏幕目标的DISPLAY语句。

关键字PRINT特别用于给一个报表产生一行输出。关键字DISPLAY将输出引入屏幕。可
能这个语句被偶然从一个报表主体中拷贝而来,更可能的原因是仓促中试图在屏幕上
显示一个临时的输出。在后一种情况下,只要简单地将PRINT改为DISPLAY就可以了。

-4427 DISPLAY语句的COLUMN特性只能用于无屏幕或显示字段目标的显示中。

COLUMN函数返回一个串,其中的空格足够长使之能达到某种用于显示输出的字段。可
以与不合格的DISPLAY和DISPLAY AT合用,但是它与DISPLAY TO 或DISPLAY BY NAME不
相适应。

-4428 不可以在一个INPUT或PROMPT语句中使用PROMPT语句,即使它包括在一个
条件或循环语句中。

可以从另一个PROMPT语句或一个INPUT语句中执行PROMPT语句,但是为了做到这点必须
将这个PROMPT语句放入一个函数中并调用该函数。不能在一个INPUT语句或另一个
PROMPT语句中嵌入一个PROMPT语句的文本。

-4429 报表与函数参数不能是数组。

不能传递一个整个的数组作为函数的参数,但可以用下标传递一个单独的数组元素。
可能产生这种错误的数组是一个使用星号标记传递的记录变量的元件。这个错误只能
被4GL返回。

-4429 参数不能是数组、带有数组成员的记录或者常数。

不能传递一个整个的数组或常数作为函数的参数,可以用下标传递一个单独的数组元
素。可能产生这种错误的数组是一个使用星号标记传递的记录变量的元件。这个错误
只能被NewEra返回。

-4430 数值无法用RETURN从报表传出。

报表不能含RETURN语句,因这会将控制权传回给调用这个报表的程序。这个错误只由
NewEra 传回。

-4430 一个报表的记录参数不能包括是数组的成分。

不能传递一个整个的数组来作为函数的参数。可以用下标传递数组的元素。在这种情
况下,一个记录变量用星号标记指定为一个参数,而记录的元件之一是一个数组。

-4431 扩展的报表参数的数目已超过了最大许可值。

这条信息不能被当前任何 Informix产品返回。如果发生了这个错误,请记录全部环境
并且与Informix 技术支持部联系。

-4432 一个GROUP子句中的元素必须是ORDER BY 子句中的成员。

为了执行分组,选定行的集合必须按相同字段排次序。这是强制使全部相等的值都能
被找到,成为一个组的唯一方法。重写语句使每个选定来成组的值都在一个ORDER BY
语句中出现。注意这两个语句允许你按照它们的位置数参考选定值,如下例所示:

SELECT customer_num, month(order_date), avg(ship_weight)
FROM orders
ORDER BY 1

-4433 用在上述语句中的变量必须是CHAR或VARCHAR类型。

在REPORT TO 语句中的文件名必须赋予一个字符值;而且,在REPORT TO PIPE语句中
的程序名也必须赋予一个字符值。在任一情况下该值必须是一个常数、上述两种类型
之一的变量或一个表达式。但是它不能是数或其它数据类型;在这个语句中无自动的
类型转换。

-4434 -INFORMIX-4GL 演示版本的期限已经超过,请打电话给Informix Software,
Inc,号码为 (415) 926-6300,以取得许可信息。

一个使用-INFORMIX-4GL 演示版本编译的程序只能包含一个不超过150个语句的模块。
这个程序或是包含太多的语句,或是调用了另一个模块内的函数。与你的INFORMIX销
售代理联系,以取得完全许可的信息。

-4435 一个可接受的连字符键的格式是CONTROL-X ,此处X是除A, D, H, L,
R, 或 X之外的任何字符。

当一个键被一个ON KEY子句锁住时,它丢失了其它特殊功能;例如,如果锁住了退出
键,必须用OPTIONS语句建立另外一个可接受的键。不允许用控制键A, D, H,
L, R, 或X,因为它们有编辑功能,而且没有办法将其它键指定为这些功能。

-4436 在一个语句中有过多的变量要 VALIDATE 或 INITIALIZE。

在 VALIDATE 或 INITIALIZE语句中有一个250个(到版本4.0)名称的限制。只需把这
个语句分成多个语句使之不超过极限。

-4437 在SELECT列表中的全部表的名称必须与FROM子句中的表的名称相同。

一个用于字段列表中选定的表的名称没有出现在FROM子句中。可能只是简单地在一或
两个地方拼错了名称,或者可能在选定列表中使用了表的别名,而忘记在FROM子句中
定义。

-4438 不能SELECT到一个字符变量的子串。

子串标识在INTO子句中不允许。可以在一系列字段中和在一个WHERE子句中指定一个字
段的子串去选定。但是,你不得不选定进一个整个的变量。使用一个LET语句定义一个
变量选定或移动数据到一个目标子串。

-4439 不能SELECT到记录<记录名称>;因为元素<元素名称>;是一个记录或数组。

INTO子句只能命名简单变量。星号或THRU标识的用法是一个为了在记录中列出全部显
示字段元件的速记。在这种情况下,显示字段名称不是简单的。也许你参考了错误的
记录。如果不是,将不得不分别将名称元件列表,指定一个或更多的它的元件部分。

-4440 在记录/对象中,<名称1>;在<名称2>;字段之前,当与THROUGH速记合用时也
必须在它之前。

THROUGH 或 THRU 速记要求给出它们在记录中以物理顺序出现的开始和结束的字段。
检查名称的拼法。如果它们是所要的,那么参考记录被定义处的VARIABLE语句,看看
它们为何不按你所期望的顺序。这个错误只能被NewEra返回。

-4440 在记录/目标中,<名称1>;在<名称2>;之前,当与THROUGH速记合用时也必须在
它之前。

THROUGH 或 THRU 速记要求给出它们在记录中以物理顺序出现的开始和结束的字段。
检查名称的拼法。如果它们是所要的,那么参考记录被定义处的DEFINE语句,看看它
们为何不按你所期望的顺序。这个错误只能被4GL返回。

-4451 从这个函数/报表中产生的pcode的大小已超过每一函数32K的限制。

该函数或报表将不得不简化。抽出一部分代码变成一个独立的函数并调用该函数。
这个错误只由 NewEra 传回。

-4451 从这个函数中产生的pcode的大小已超过每一函数32K的限制。

该函数将不得不简化。抽出一部分代码变成一个独立的函数并调用该函数。

-4452 这个函数(或报表)名称已被定义。

不同函数不能同时拥有相同名称。不同报表不能同时拥有相同名称。改变相同名称函
数的其中一个名称。这个错误只由NewEra 传回。

-4452 函数(或报表)的名称已经被定义。函数和报表不能有相同的名称。

每个函数(或报表,与函数类似)在程序中必须有唯一的名称。改变函数或报表的
名称。

-4453 在程序中有太多的全局标识符和文字串。

一个256K字节长的表包括用在主函数、全局以及模块级的字符串和标识符,这个表也
包括屏幕格式、窗口和光标的标识符。为了避免这个错误,将一些使用了很多文字串
的代码移到一个单独的模块或函数中。或者,找一个不指定文字串而初始化字符变量
的办法,例如从一个数据库或文件中读取初始值。减少全局和模块内的变量数也有帮
助。

-4453 全局字符串表的尺寸已超过32767的限度。

表是用於保留使用在主函数及全局和模块级的字符串及标识符的。这个表也包括屏幕
格式、窗口和光标的标识符。为了避免这个错误,将一些带有很多文字串的代码移到
一个单独的模块或函数中。或者,找到不指定文字串而初始化字符变量的办法,例如
从一个数据库或文件中读取初始值。减少全局和模块内的变量数也有帮助。这个错误
仅被4GL返回。

-4454 太多的局部标识符和文字串在这个程序块中。

当前函数使用的文字串和标识符保存在一个256K字节的表中。为了避免这个错误,
将这个函数分割成两个或更多的子函数。另一种办法是,寻找一种不需要赋值文字串
就能初始化字符变量的方法,例如从一个数据库或文件中读取初值。这个错误仅被
NewEra返回。

-4454 局部字串的尺寸已超过32767的限度。

表格是用於保留使用在目前函数中的文字串及标识符。为了避免这个错误,将这个函
数分割成两个或更多的子函数。另一种办法是,寻找一种不需要赋值文字串就能初始
化字符变量的方法,例如从一个数据库或文件中读取初值。这个错误仅被4GL返回。

-4458 数组的每一维必须在1和32767之间,包括1和32767。

数组的维不能小于1或大于32,767。如果需要更大的数组,必须将数组分割成多重数
组,或使用多维。

-4475 "name"不能既用于一个函数(或报表)名又用于一个标识符名。

名称至少被用两种方法定义。全局或模块级的名称必须是唯一的。定位所有的有关这
个名称的定义和说明并修改除一个以外的全部。这个错误仅被NewEra返回。

-4475 "name"不能既用于一个函数(或报表)名又用于一个变数名称。

名称至少被用两种方法定义。全局或模块级的名称(函数名称,报表名称及整体或模组
变数名称)必须是唯一的。定位所有的有关这个名称的定义和说明并修改除一个以外的
全部。错误-4475仅被4.1版之后的4GL返回。

-4475 "name"不能既用于一个函数(或报表)名又用于一个标识符。

名称至少被用两种方法定义。全局或模块级的名称必须是唯一的。定位所有的有关这
个名称的定义和说明并修改除一个以外的全部。错误-4475仅被4.1版之后的4GL返回。

-4476 记录成员不能被数据库字段子串使用。可能是错误拼写或使用未定义的主机
变量。

这个语句有一个name1.name2[...]屏幕表格的参考。这是一个必须指定字段:
table.column[...]子串的格式。而名称不是数据库中的一个表和字段,所以4GL
预测它们代表一个表中的一个显示字段。检查语句并决定想做什么:一个字段的参考
还是一个记录的参考。如果是一个字段的参考,检验数据库中表和字段的名称。如果
是一个记录参考,检验那个记录和元件是否正确定义。如果记录和表的名称相同,在
名称上加一个@前缀以清楚的表明是表而不是记录。

-4479 警告:非ANSI注释指示器。对ANSI兼容使用"--"。

如果你想要SQL语句符合标准,你必须使用双破折号注解界定符号 (- -)。这个数字
符号的注解界定 (#) 及大括弧 ({ }) 不适用於符合ANSI标准的系统。这条信息的
出现,是因为你指定程序对不符合ANSI标准的结构发出警告(藉由ansi指令列参数、
DBANSIWARN 环境变数或在informix.ini文件的DBANSIWARN设定)。这个错误仅被
NewEra返回。

-4479 警告:非ANSI注释指示器。对ANSI兼容使用"--"。

如果你想要SQL语句符合标准,你必须使用双破折号注解界定符号 (- -)。这个数字
符号的注解界定 (#) 及大括弧 ({ }) 不适用於符合ANSI标准的系统。这条信息的
出现,是因为你指定程序对不符合ANSI标准的结构发出警告(藉由ansi指令列参数或
DBANSIWARN 环境变数)。这个错误仅被4GL返回。

-4486 Blob变量和字自动换行显示字段不能打印到headers或尾部。

4GL能够预见一个报表中有多少行用于header或尾部。因为TEXT变量的长度是不可预见
的,你不能在上下文中显示一个。

-4487 不允许将参数与局部记录定义混合,此记录中含有TEXT或BYTE类型的变量。
请为局部记录变量使用第二个定义。

在这个报表主体中,请为报表参数和任何类型的局部变量分别使用DEFINE语句。

-4488 程序不能在这点CONTINUE或EXIT<语句类型>;,因为它不是恰好位于
<语句类型>;中。

这个CONTINUE或EXIT语句在上下文中不合适。可能是语句放置错误,也可能指定了错
误的语句类型。

-4489 上面的语句不允许在它的表达式中使用局部变量或报表参数。

这条语句不能引用一个函数中的参数,也不能引用定义在函数中的变量。它只能使用
在模块级(MAIN节之前)或在GLOBALS节定义的变量。在用于OUTPUT REPORT
TO时,这个语句在运行一个START REPORT语句期间有效。在这时没有参数传递到报表
描述,并且没有初始化局部变量的报表描述语句执行。改变语句以引用一个可以在启
动报表前被初始化的变量。

-4490 不能对同一个显示字段中使用多重BEFORE子句。

不能为同一个显示字段指定超过一个的BEFORE子句。

-4491 参数名称已经被改变。

超过一个的函数原形拷贝发生在当前作用域,并且被这个消息指出的一个是为一个正
式参数指定为一个不同名的,而不是已经遇到的被任何原形指定的那一个。

-4492 警告:参数赋予新的缺省值。

超过一个的函数原形拷贝发生在当前作用域,并且被这个消息指出的是为正式参数指
定的不同的缺省值的,而不是已经遇到的被任何原形指定的那一个。

-4493 命名的参数只允许用于正式的函数/报表。

指示的函数参考使用命名的参数,但函数或报表的说明使用了非正式风格的参数说
明,其中只有参数列表中指定的名称和后面辅助说明中指定的类型。

-4494 遗漏命名的参数"name"没有缺省值。

指明的函数请求中有一个参数没有列出值,并且函数说明对它又不提供缺省值。在说
明中增加一个缺省值,或在请求中的这里增加一个名称/值对。

-4495 重复或无效的参数。

函数请求中指定的参数名和任何一个说明的函数名都不匹配,或者是一个无效的
-NewEra 标识符。检查它的拼写。

-4496 CHAR (*)类型不能出现在记录或类中。

CHAR (*)只能作为一个参数出现在函数原形中,不能作为记录或类的元素。

-4497 事件"name"已经在类中说明。

同一个类中的两个事件不能同名。

-4498 事件/句柄名必须与内部成员函数名不同。

不能说明一个和内部成员函数名(!copy(), !derive(), 或类名)相同的事件或句柄。
改变事件或句柄的名称。

-4499 成员"name"已经在类或它的基类中说明。

一个称为"name"的成员已经在当前类中存在,并且你试图用那个名字说明另一个成
员。或者你试图重载一个事件或变量。只有成员函数可以被重载。

-4500 一个数值转换错误。因为调用程序和它的函数参数之间或变量和它的赋值表
达式之间的不兼容产生。

参照错误-1317,它替代了这个错误。

-4501 在调用和被调用函数之间产生了一个参数数目失配。

参照错误-1318,它替代了这个错误。

-4502 4GL程序运行超出了执行时的数据存储空间。

参照错误-1319,它替代了这个错误。

-4503 一个函数没有返回函数调用所期待的正确的数值。

参照错误-1320,它替代了这个错误。

-4504 一个被VALIDATE命令引起的确认错误。

VALIDATE 变量的类型不能转换成确认值的类型。
此错误仅被NewEra返回。

-4504 一个被VALIDATE命令引起的确认错误。

参照错误-1321,它替代了NewEra产品之外的这个错误。

-4505 不能打开一个报表的输出文件。

参照错误-1322,它替代了这个错误。

-4506 不能打开一个报表输出管道。

参照错误-1323,它替代了这个错误。

-4507 不能写入一个报表的输出文件。

参照错误-1324,它替代了这个错误。

-4508 PRINT FILE错误-不能为读打开文件<文件名>;。

参照错误-1325,它替代了这个错误。

-4509 一个数组的下标被引用时,超出了指定的维数。

已超出数组边界,数组边界的检查已启动。数组边界的检查可经由编译器开关 "-a"
或PRAGMA ARRAY BOUNDS语句启动。此错误仅被NewEra返回。

-4509 一个数组的下标被引用时,超出了指定的维数。

参照错误-1326,它替代了NewEra产品之外的这个错误。

-4510 不能为一个报表使用的临时表中插入行准备一个插入语句。

参照错误-1327,它替代了这个错误。

-4511 不能在选定的数据库中建立一个报告需要的临时表。用户必须具有在选定的
数据库中建立表的许可。

参照错误-1328,它替代了这个错误。

-4512 不能为一个报告需要的临时数据库建立一个数据库索引。

参照错误-1329,它替代了这个错误。

-4513 用于DISPLAY AT位置或SCROLL计数的数必须是正的。

对于DISPLAY AT语句参看错误-1335,它替代了这个错误。从4.0版本开始,SCROLL
语句接受负数。

-4514 不能向临时报表中插入一行。

参照错误-1330,它替代了这个错误。

-4515 不能从临时报表中提取一行。

参照错误-1331,它替代了这个错误。

-4516 一个字符变量的参考下标超出范围。

参照错误-1332,它替代了这个错误。

-4517 函数调用不能返回长度>;512的串。

参照错误-1333,它替代了这个错误。

-4518 4GL程序不能为临时串存储分配更多的空间。

程序试图从函数返回超过32768字节的CHAR,VARCHAR,或CHAR(*)值,或者程序隐含建立
的临时的CHAR(*)的字节数超越了32768。这个错误只被-NewEra返回。

-4518 4GL程序不能为临时串存储分配更多的空间。

对于NewEra以外的产品,请参见出错号1334,该出错号已取代本错误。

-4535 包含在表句法"file1""file2"中错误的存储。

一个内部的错误产生。

代码正产生包含语句,产生INCLUDE语句的前端Application Builder代码和执行从数
据库中添加和搬移数据的后台Application Builder代码失步。

这也可能在一个特长的文件名超越64K的存储是发生。

-4536 打开数据库失败。

应用开发工具不能打开数据库。这可能因为网络失败,-INFORMIX-NET失败,或在
DBPATH环境变量中有一个非法的值。检查DBPATH的设置,并运行SETNET,
也要检查unix主机在正确的状态。

-4538 没有给出数据库名称。

Application Builder试图不指定数据库名称运行OPEN DATABASE命令。检查
informix.ini中"database=..."一行。如果想要确省的数据库,设置该行为
"database=syspg4gl"。

-4542 企图更新数据库结构失败。

Application Builder试图把一个-INFORMIX-4GL老风格数据库升级到由NewEra
新风格数据库失败。这个进程包括建立一系列新表以及修改和移动数据。
这个错误可能因缺少许可而产生。更新应该由数据库的拥有者来完成。
这个错误可能由于磁盘满产生。更新在写和校验完成前不会擦除老的信息,然后只有
被要求才会。一个更新所需求的自由空间的总和近似等于旧的数据库的总和。

-4555 变量大小不能超越65535字节。

企图建立一个总大小超越65535的对象。数组能以超出你注意的速度消费空间。一个简
单的CHAR(6)的数组A[100,100]将占用10,000*7-70,000字节。

-4556 对象大小不能超越65535字节。

企图建立一个总大小超越65535的对象。数组能以超出你注意的速度消费空间。一个简
单的CHAR(6)的数组A[100,100]将占用10,000*7-70,000字节。

-4654 CHAR大小应该在1到32766的范围内。

程序说明的一个CHAR类型变量的大小超出可接受的范围。

-4655 为VARCHAR指定的范围无效。

对fort VARCHAR(最大的,保留的)的声明不正确的指定了一个保留值。它不在包括
的0和最大值的区间内。

-4658 常量不允许做光标名。

用于动态光标名的标识符必须是变量。

-4659 CHAR(*)类型不允许做报表参数。

一个正式的参数不能接受一个未指定长度的字符数据类型,象CHAR(*)。

-4660 报表参数不能带有对象参考。

一个正式的参数不能指定一个类名(也不能是FOREIGN)作为它的数据类型。

-4661 存取控制约束不允许这样的内部成员函数。

内部成员函数!copy()和!derive()必须有一个-PUBLIC存取控制。注意这是一个缺省的
成员函数存取控制。

-4663 从引擎产生的ODBC错误—"<文字>;

使用了-useccl编译开关。一个ODBC错误,这里是"<文字>;"被侦测到。

-4664 CCL类的声明要求一个"-useccl"开关。在模块中增加INCLUDE SYSTEM
"ixstmt.4gh"

如果用户要通过-useccl开关编译一个REPORT或MAIN程序块,需要包含ixstmt.4gh。
这个语句调用的函数在参数表中嵌套了其它的函数调用,并超过了四级。最大的支持
级数是四,象如下的表达式:Afun(2-Bfun(3+Cfun(4*Dfun(5))))。
重写表达式用变量存储最内层的函数调用结果,并将变量用于表达式中。

-4665 警告:报表页首或页尾输出必须以新行符结束,所以新行符被自动加入报表。

报表头或报表尾在行尾包含一个分号,而报表体中结尾的分号抑制新行的产生,所
以头和尾必须以新行字符结尾以使执行正确。编译器忽略了分号,所以,要避免出现
本警告信息,需删除源代码中的分号。

-6000 试图在未打开的表或数据库上执行一个操作。数据库尚未打开。

在一个程序存取数据前,必须选定一个数据库,然后用dbselect()函数选定一个表。
回顾程序逻辑并找出为什么没有进行这些调用。

-6001 数据库或表不存在。

函数指定的数据库或表不存在。名称不正确或选定了错误的数据库,或数据库已经被
改变。

-6002 企图打开多于一个的数据库。

程序连续两次通过DBOPEN标志调用dbselect()。程序在打开另一个数据库之前必须用
DBCLOSE标志调用-dbselect()。

-6004 没有打开数据库。

程序调用了一个要求一个已被打开的数据库的函数,但没有打开的数据库。程序必须
在调用这个函数之前调用dbselect()。

-6005 不能找到一个字段。

传递给函数的字段名称至少有一个在表中不存在。回顾表的名称和字段的名称。如果
它们是正确的,则是选择了错误的数据库或数据库已被改变。

-6006 表名尚未打开。

名称传递给函数的表尚未打开。调用dbselect()时程序必须首先打开表。

-6007 无法在当前表中找到字段或索引。

传递给函数的字段名在表中不存在。回顾名称的拼写。如果它是正确的,则是选择了
错误的数据库或表已经被改变。

-6008 表名尚未打开。

dbselfield()使用的表必须首先用dbselect调用打开。回顾程序逻辑并确认这已完
成。

-6009 表中没有数据。

这个指示在dbselfield()或dbfind()对空表调用时返回。它并不反映程序错误而是反
映一个表的状态。

-6010 找不到值。

按关键字搜索的dbfind()调用无数据返回。要找的值在选定的索引字段中没有找到。

-6011 文件结束。

对NEXT行的dbfind()调用没有得到数据。到达了表尾。

-6012 文件开始。

对PRIOR行的dbfind()调用没有得到数据。到达了表头。

-6014 没有这样的标志值。

这个函数的标志参数不是一个被定义的值。当调用带有预先定义的标志值的函数时,
应该使用定义在包含文件dbio.h中的名称;并且必须只传递为特定的函数定义的值。

-6015 表名尚未打开。

这个函数指定的表名必须首先用dbselect()打开。回顾程序逻辑并确认这已完成。

-6016 没有视图被设置。

调用dbfind()前,程序必须建立一个视图,这就是说,一个返回字段的说明,和接受
它们的缓冲区。这通过调用dbsetview()完成。回顾程序逻辑并确定这已完成。

-6017 不能增加一个重复的值;索引已经被定义为唯一的。

出现在dbadd()中的字段值至少有一个和已经存在的字段的值重复。而字段被约束为包
含唯一的值。这一行不能被插入。

-6018 表名尚未打开。

dbadd()使用的表必须首先被dbselect调用打开。回顾程序逻辑并确定这已完成。

-6019 没有设置视图。

在调用dbadd()之前,程序必须建立一个视图,这就是说,一个对返回字段的说明和接
受它们的缓冲区。这在调用dbsetview()时完成。回顾程序逻辑并确定这已完成。

-6020 没有当前行。

dbdel()和dbupd()函数在上一次用dbfind()选择的行上操作。回顾程序逻辑确认已调
用dbfind()建立了一行。如果调用是dbfind()自身,它传递一个象CURRENT这样的标志
假设一行已经在以前的调用中被选定,但没有任何东西。

-6021 表名尚未打开。

被dbdel()使用的表必须首先被-dbselect调用打开。回顾程序逻辑以确定这已完成。

-6022 锁定被否认。

可能表已经被其它进程锁定。程序应该等待一段短的时间并再次试图锁定。如果状态
依旧,程序应该回滚其事务并重试整个操作。

-6023 表名尚未打开。

被dblock()或dbunlock使用的表必须首先被一个dbselect调用打开。回顾程序逻辑以
确认这已完成。

-6024 内存分配错误,内存不够。

在特定的操作中内存分配用于保持内部的数据结构。在这个调用中,内存分配失败。
打开更少的表并且/或者建立dbview结构时使用更少的字段可能避免这个问题。

-6025 表已经打开。

dbselect()调用传递的表的名称已经打开。表继续被打开。回顾程序逻辑以确认是否
有一个冗余的dbselect()调用。

-6026 命名的字段必须被索引或必须选择顺序搜索。

这个dbselfield()调用命名了一个在数据库中没有索引的字段,但是传递的标志是
ACCKEYED。确认命名了正确的字段并且正确的数据库已经打开。如果是那种情况,索
引已经失去并且应该在重新运行程序前重建。

-6027 不能插入一个NULL值到一个NOT NULL字段。

这个dbadd()或dbupdate()调用试图插入一个包含一个null值的行到一个被约束为
not-null的字段。这可能因为程序用dbsetnull()在记录缓冲区放置了一个null;或者
因为当前的视图忽略了一个被约束为not-null的字段。这行没有插入。回顾表的定义
和程序逻辑并修改以使所有not-null字段在添加或更新前被定义。

-6028 表名还没打开。

dbupdate()使用的表必须首先被一个dbselect调用打开。回顾程序逻辑并确认这已经
完成。

-6029 没有视图被设置。

调用dbupdate()前,程序必须建立一个视图,这就是说,一个返回字段说明和接受它
们的缓冲区。这在调用dbsetview()时完成。回顾程序逻辑并确定这已完成。

-6030 不能增加一个重复的值;索引已经被定义为UNIQUE。

至少有一个出现在dbupdate()的字段的值与已经存在的字段的值重复。但是,那个字
段被限定只包含唯一的值。这行不能被插入。

论坛徽章:
0
10 [报告]
发表于 2005-05-20 14:58 |只看该作者

贴个Informix错误代码中文解释供大家参考

-6031 用户没有SELECT指定字段的SQL许可。

运行这个程序的用户帐户没被授予在当前表中或选定的特别字段中SELECT的权限。数
据库权限是用SQL语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权
限,再重新运行程序。

-6032 用户没有在表中INSERT行的SQL许可。

运行这个程序的用户帐户没被授予在当前表中INSERT的权限。数据库权限是用SQL
语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权限,再重新运行程
序。

-6033 用户没有UPDATE指定字段的SQL许可。

运行这个程序的用户帐户没被授予在当前表中UPDATE的权限。数据库权限是用SQL
语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权限,再重新运行程
序。

-6034 用户没有在表中DELETE行的SQL许可。

运行这个程序的用户帐户没被授予在当前表中DELETE的权限。数据库权限是用SQL
语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权限,再重新运行程
序。

-6035 没有当前行。

传递给dbfind()的标志参数含有一个当前行的意思(例如,一个CURRENT或NEXT
标志是与FIRST中的一个相对的);但是,没有当前行被以前的调用建立。
回顾程序逻辑并确定在一个这样的调用前建立一个当前行。

-6036 一个别名名称与数据库中一个已经存在的表名一样。

传递给dbalias()的新名称参数已经在数据库中作为一个表存在。回顾程序逻辑并修改
以使用唯一的别名。

-6037 一个以前使用过的别名名称。

传递给dbalias()的新名称参数已经在前面的调用中作为别名被定义过。一个别名在一
个程序的运行中只能被定义一次。回顾程序逻辑并修改使得别名只使用一次。

-6038 该别名不能是已存在的别名的别名。

dbalias()中出现的旧名参数已经作为别名在先前的调用中定义过了。程序可以为表
定义多重别名,但不能为另外的别名定义别名。检查程序逻辑,修改它,使该旧名参
数是数据库中的真正表的名字。

-6040 在数据库中找不到表名的别名。

dbalias()中的旧名参数作为表的名字在当前数据库中找不到。检查参数值;如正
确,也许当前数据库是错的,或想要的表被改名了。

-6041 字段号比表中的字段数多。

提供给dbnfield()的字段参数多于所传表中的字段总数。如果程序的字段号从零往
上循环,本返回代码说明表的结束。否则检查所传的号,如正确,不是当前数据库是
错误的,就是表被改过了。

-6042 传给dbprusing函数的格式不对。

传给dbprusing()的格式串不被接受。检查所传的值,参考INFORMIX-4GL中REPORT
功能的参考资料中描述的USING函数的规则。

-6043 该字段不是复合键。

传给dbselfield()的字段名参数不是指定表中的字段名,也不是其中的复合索引
名。检查表名和字段名。如它们都对,确认所用的数据库是否正确。如果是这样,应
取消所期望的索引,或用另外的名字建立它。

-6044 字段号比复合键中的字段数多。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6045 无字段或索引被选中。

程序调用dbfind()之前,必须调用dbselfield()来建立一个检索方法。即使不用
索引也要这样作。检查程序逻辑,确认它被做了。

-6050 错的键描述:内部错误。

该错误不应发生。最可能的原因是内存中由<pn product name>;ALL所用的内部数据结
构被重写了。检查程序逻辑。当你确认程序未曾存入<pn product name>;ALL数据时,
记录所有信息,并与Informix 技术支持部门联系。

-6052 该表的当前视图未包含所有的复合索引。

当程序调用dbselfield()来设置一个复合索引时,该索引的所有字段必须包含在由调
用dbsetfileview()或dbstructview()所建立的当前视图中。检查程序逻辑,尤其
是后两个函数的调用,确认这些都作了。如果视图如你所设,可能是复合索引已被
取消,用一个或多个不同字段重新建立它。

-6055 BEGIN WORK错。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6056 COMMIT WORK失败。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6057 ROLLBACK WORK失败。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6062 当表中的任一字段允许是空指针时,Dbsetfileview函数不能用。

因为它构造的缓冲区没有对齐,dbsetfileview()不能为可能是空指针的字段生成缓
冲区。

-6063 空指针参数。

该函数的参数应包含一个指向内存的指针,实际参数中却包含一个C的空指针(0)。
检查程序逻辑看错误是如何发生的。

-6064 想结束一个未开始的事务。

当事务无效时,程序调用了dbcommit()或dbrollback()。或未调用dbbegin()
来开始一个事务,或事务已由于对dbcommit(),dbrollback()或dbselect()的
调用而结束。检查程序逻辑,看错误是如何发生的。

-6065 数据库无事务。

由于当前库不支持事务,所以对dbbegin(),dbcommit()或dbrollback()的调用
是不合适的。可以对数据库进行转化,使之支持事务;参看数据库服务器参考手册。

-6066 数据库服务器协议错误。

这是个不应该发生的内部错误。如错误再次发生,记录所有情况,并和Informix的技
术支持部门联系。

-6067 想在事务之中将一个表进行解锁。

这是事务内部调用dbunlock()错误,即在调用dbbegin()和调用dbcommit()或
dbrollback()之前。当使事务处理时,所有的锁必须保持直到事务被提交或滚回。
结束事务自动解除所有的锁。

-6068 数据类型不被支持。

某个字段的数据类型不被这个版本的ALL支持,例如BYTE数据类型。检查实际表所需的
字段,只能用数值或CHAR数据类型的字段。

-6069 想在事务之外锁定一个表。

当用一个有事务的数据库时,事务范围之内的所有表都要被打开,就是说,在对
dbbegin()成功调用之后。检查程序逻辑看这是否已完成。可能自从程序最后一次被
调用以来,事务日志已被用于数据库了。

-6070 试图关闭一个有活动事务的数据库。

在用dbselect()函数关闭数据库之前程序必须结束当前事务。这可以通过调用
dbcommit()函数或dbrollback()函数来解决。
例如,你收到-7028号错误信息,它在-7000到-7199之间,你就要查询光盘子系统
开发商手册中的错误号。你将在手册中的28号查到该错误信息。

-7000 <错误号>;7000错误由光盘子系统引起。参考适当的子系统手册。

在所用的子系统文档中检查错误号。

-7202 数据库建立没有NLS功能.

你试图在一个非NLS数据库中建立一个NCHAR(或NVARCHAR)字段,或说明一个NCHAR(或
NVARCHAR)变量.

-7203 DBNLS未被设置或LC_COLLATE必须是范畴值。

当你试图对一个与当前数据库变量的位置不同的外部数据库变量进行访问时,该信息
出现。为用该NLS数据库,你必须将DBNLS环境变量设置为1或2,设置LC_COLLATE环境
变量为指定的范畴值。

-7204 LANG或LC_COLLATE环境变量无效。

LANG或LC_COLLATE环境变量设置无效。将其中的一个或全部设置成你的系统支持的值

-7205 DBNLS未被设置或LC_CTYPE必须被设置为范畴值。

当你试图对一个与当前数据库有不同位置的外部数据库进行访问时,本信息可能被返
回。为存取该NLS数据库,你必须将DBNLS环境变量设置为1或2,并设置LC_CTYPE
环境变量为指定的<范畴值>;。

-7206 LANG或LC_CTYPE环境变量无效。

LANG或LC_CTYPE环境变量的设置无效。将其中的一个或全部设置成你的系统支持的
值。

-7207 LANG或LC_MONETARY环境变量无效。

LANG或LC_MONETARY环境变量的设置无效。将其中一个或全部设置成你的系统
支持的值。

-7208 LANG或LC_NUMERIC环境变量无效。

LANG或LC_NUMERIC环境变量设置无效。将其中之一或全部设置成你的系统支持的值。

-7209 LANG或LC_TIME环境变量无效。

LANG或LC_TIME环境变量设置无效。将其中之一或全部设置成你的系统支持的值。

-7210 该服务器没有NLS功能。

当你想从一个无NLS准备的数据库服务器存取数据时,返回该信息。该数据库服务器不
支持NLS。同Informix联系,获得支持NLS的版本。

-7211 无法引用外部NLS数据库。

如果你的当前数据库不是NLS数据库,你就不能在另一个或同一个数据库服务器访问
NLS数据库。但是,如果NLS环境变量设置正确,即使你的当前数据库不是NLS数据库,
你也可以取消一个NLS外部数据库。

-8001 为TOP MARGIN,FIRST PAGE HEADER(PAGE HEADER),PAGE TRAILER,
BOTTOM MARGIN指定的换行数必须在页中为ON EVERY RECORD子句的打印留出足够
的空间。

为上述语句定义的行总数超出了页长。检查在OUTPUT节的每条语句中,在FORMAT节中
的header,tailer说明中,是否输入了所期望的行数。

-8002 ACE报表说明太大或太复杂,不能正确地编译。实现该说明所需的指令数超过
了编译器的指令表中分配的空间的大小。

减小报表长度。既然你无法分块编译报表,那你必须想法简化报表。

-8003 SMALLINTEGER常数不能比32767大。

SMALLINT的值的允许范围是-32767到32767。所有数只允许用数字字符表示。

-8004 非法的FLOAT常量。

FLOAT常量写得不对。指数可能太大或太小(指数范围依赖于你的计算机和操作系统,
但和你的C编译器允许的DOUBLE数据类型范围一样),或有不正确的标点或有除"e."的
非数字字符。

-8005 定义了太多的用户变量,参数或函数。你定义的数量不能超过ACE说明中规定
的<数量>;。

为ASCII字段,参数,变量定义的标识符总数不能超过显示的数。你要简单化你的
报表。

-8006 引号中的串长度不能超过80个字符。

你必须减小引号中的长度,使之不超过80个字符。在PRINT语句中,将串简单分为较短
的各部分,用逗号分隔。

-8007 一个被引的串中的引号不匹配。

报表说明的该行有奇数个引号(")。引号中的串不能包含换行符,所有的引号串必须
在一行中完成。要想打印一个长的串,将它的各部分存在变量中,然后在PRINT
语句中将它们都列出来。

-8008 文件<文件名>;无法打开。操作系统被要求为读而打开它。

检查文件名的拼写。检查它确实存在,且你的帐户有权读它。如果它所在目录并不是
当前目录,你应输入完整的路径名。

-8009 发生了内存分配错误。ACE报表说明可能太大了。

ACE编译器不能分配所需的内存。想法减小报表说明的规模。

-8010 文件<文件名>;无法打开。操作系统被请求为写而打开它。有可能是文件存在
但用户无权写它。或者,用了-o选项,但目标目录并不存在。

确认文件名拼写正确,且你的帐户在它的目录下有写的权限。(该目录可能在DBTEMP
环境变量中命名)。如同名文件已存在,或删掉它,或确认你的帐户对它有写的权
限。

-8011 调用的用户函数<函数名>;还未被用户定义过。

现在调用了所显示的函数。ACE把它当做外部C函数。但是,外部函数必须在报表的
DEFINE节用FUNCTION语句定义过,但该函数名未被定义。如果该名字确实是外部函数
名,则为它插入一个FUNCTION语句。

-8013 想打开列表文件<文件名>;时发生错误。确认当前目录下用户有写文件的权限。

确认你的帐户对当前目录有写的权限,且如果当<文件名>;已经存在时,你的帐户对它
有写的权限。

-8014 用法:SACEPREP[-q][-o <输出目录>;] <输入文件名>;(等等)。

你输入的命令行中有些东西使SACEPREP命令无法接受。读该信息,记住各种选项的句
法格式。重敲命令行。

-8015 在<行号>;行,<字符数>;处开始的注释内又发现了开注释符号‘{’。这可能是
由于未关闭前面打开的注释,它起始于<行号>;行,<字符数>;处。

不应用嵌套注释。在报表说明中合适的地方插入关注释符号。

-8016 注释打开了却未关上。最后一个注释起始于<行号>;,<字符数>;处。

在报表说明中合适的地方插入关闭注释符。

-8017 在<行号>;行,<字符数>;的字符处发现非法(不可见,控制)字符。它在列表
中被一个空格代替,但它仍在源(输入)文件中。重新编译之前应该先删掉它。

用字处理编辑器在文档方式而不是在文本方式下编辑时,可能引入非法字符,或编辑
时敲了非显示字符,或是由于数据的损坏。

-8018 <行号>;行,<字符数>;处发生语法错误。结构在上下文中无法理解。

源文件中有句法错误。可能拼错了某个关键字或在文件中的位置错误。检查报表说明
文件中关键字的拼写和控制块的次序。

-8019 无法为读TEXT字段而打开临时文件<文件名>;。

对每个为报表选择的TEXT字段,ACEGO要在DBTEMP环境变量中命名的目录下准备一个临
时文件。该信息说明该文件已被建立,且TEXT的一份拷贝也已载入,但现在不能读。
查看操作系统的出错信息,那里可能给出更多的细节。如果错误再次发生,记录所有
信息,并与Informix技术支持部门联系。

-8021 源文件<文件名>;打不开。也许因为该文件不存在。

检查文件名的拼写。检查当前目录下是否有该报表说明文件,或是否在另一个目录
下,你提供的路径名是否正确。如果上述都没问题,确认你的帐户对该文件有读的权
利。

-8022 该标识符超过了标识符的最大长度50。

你必须用一个短一点的标识符。

-8025 在<行号>;行,<字符数>;处发现注释结束符 "}",但没有注释的开始。

除非它们被括在引号之中,否则注释符号必须匹配。可能是因为编辑时不小心删掉了
注释开始符。修改文件,使注释被正确定界。

-8030 在<行号>;所指的行,<字符数>;所指的字符处发生排印错。

所显示位置的单个字符无句法错误,但它不能被解释为报表说明的一部分。

-8033 源文件<文件名>;超出了最大长度10。

屏幕表格编译器对源文件标识符有一个长度限制。你用该文件时必须把它改名。在DOS
系统下,文件名最长为8字符加3字符的扩展名。

-8034 命令行中出现了未知选项<选项>;。

ACEPREP支持的命令行选项有如下几条:
* -s 用于将消息隐蔽起来。
* -o 用于命名输出。
* -ansi 用来检查ANSI兼容性
ACEGO支持的命令行选项有:
* -s 用于将消息隐蔽起来。
* -d 用于命名一个数据库。

-8051 LEFT MARGIN必须不小于零,不大于RIGHT MARGIN。

修改OUTPUT节中的LEFT MARGIN或RIGHT MARGIN语句,使之具有合理值。

-8052 编译器的串表中没有足够的空间用于存储CHAR变量。

减小报表说明中字符型变量的长度,或减少其数量。

-8053 PAGE LENGTH,TOP MARGIN,BOTTOM MARGIN都不允许比零小。

修改OUTPUT节中的语句,使之具有合理值。

-8054 串<串>;无法放入编译器串表的剩余空间中。

减小报表说明中的串长度或减少其数量。相同的串只存一次。

-8055 该常数使ACEPREP中的常数表溢出。

减少报表说明文件中的数值常量数。

-8056 不允许在PAGE HEADER或TRAILER中的WHILE或FOR循环里有跳行。

ACEPREP需要决定分配给header和tailer的行空间(否则将无法决定每页具体会有多少
行)。它无法预言一个循环将执行多少次,所以它不得不禁止那些部分中的SKIP
语句。

-8057 LET语句中只有CHARACTER类型的用户变量可以有列表或加下标。

你只能对一个字符型变量的名字用下标(方括号中的两个数,用于提取字符串中的某个
子串)。在LET语句中,你可以把多个串赋值给一个变量,,串之间用逗号分隔。其它
类型变量只能接受单一的值。

-8058 ASCII显示字段<显示字段名>;已被定义。

一个显示字段名只能定义一次。DEFINE节中的显示字段名必须唯一。也就是说,一个
名字不能同时用于PARAM和显示字段。

-8059 IF语句嵌套溢出。IF语句中含有过多的IF语句,使ACE无法正确编译该报表说
明。

你的IF语句嵌套超过了最大允许级数,你必须简化报表的逻辑。

-8060 报表说明中过早出现文件结束符。

ACEPREP在它仍需输入时遇到了报表说明文件的结束符。你可能忽略了一个END语句。
至少需要一个FORMAT节,它至少包含一个EVERY ROW语句,且每个控制块至少有
一条语句。

-8061 该报表有一个READ语句,但未指定ASCII记录定义。

想用READ语句,你必须在DEFINE节使用ASCII语句定义ASCII文件中期望的显示字段。

-8062 该报表包含一句SELECT语句,但应改用READ语句,因ASCII记录定义已被指
定。

报表可能基于一个ASCII文件或数据库行,但不是二者同时。DEFINE节的ASCII语句说
明将使用输入文件,而且READ语句用来读该文件。如你想使报表基于数据库行,保留
SELECT语句,删去ASCII。

-8102 ORDER BY命令中指定的单一字段只能有一句AFTER或BEFORE GROUP OF子句。

报表中的某一字段包含不只一句AFTER GROUP OF或BEFORE GROUP OF子句。只有其中之
一可以命名一个给定字段。然而,你可以把语句合并,使多个子句合并为单一子句。

-8103 为使BEFORE或AFTER GROUP OF子句能正确执行,子句中指定的字段必须已在
ORDER BY命令中作为排序字段指定过。如果排序字段有下标,BEFORE和AFTER GROUP
OF子句中的字段也应如此。

确保在ORDER BY语句和GROUP OF子句中指定的控制字段要相同。

-8104 组聚合只能用在AFTER GROUP OF子句中。

当一个组的行被处理时,该组上的聚合值被积累,所以聚合的值只有在组尾才可用。
因此除在AFRER GROUP OF子句中,报表不能引用它。

-8105 聚合不能使用在另一个聚合中。一个聚合不能使用在另外的聚合的WHERE子句
中。

聚合函数不能嵌套使用。主要因为外部聚合被积累时内部聚合的值不确定。改写聚合
表达式,只引用字段和字段的简单表达式。在AFTER GROUP OF子句中你可以将某几行(
作为一组)的聚合值存在一个变量中,然后就可以用于下一个组上的聚合运算。

-8107 用户变量或参数被定义了多次。

DEFINE节中一个名字只能定义一次,你在ASCII,RARAM或VARIABLE语句中将某个
名字用了不止一次。

-8108 用户变量或参数的长度必须大于零。

确定DEFINE节的每个CHAR和VARCHAR显示字段都有非零的长度说明。

-8109 PAGE HEADERS和TRAILERS中不能用字自动换行。

ACEPREP需要知道header和trailer部分有多少行(否则它将不清楚每页具体会有多少
行)。然而,用WORDWRAP函数打印会使行数成为一个动态变量,依赖于字数,因此不
能用。

-8110 用户变量名<名字>;还未被定义。

名为<名字>;的变量,参数或显示字段在DEFINE节中未定义。如<名字>;拼写正确,它必
须先被定义。

-8111 ORDER BY语句中不允许有用户变量和运行时参数。

只有字段名可以用在ORDER BY子句中。检查子句中的字段名或显示标签拼写。你不能
根据被定义的变量,参数或者ASCII显示字段进行排序。

-8112 在header或trailer子句中,IF-THEN-ELSE语句中的IF部分中的打印行数必须
和ELSE部分中的打印行数相同。

ACEPREP需要知道header和trailer部分将占多少行(否则它将不清楚一页具体会有多
少行)。由于无法确定IF语句将执行哪一部分,所以要求两部分有相同的输出行数。

-8113 任何header或trailer子句中不能出现SKIP TO TOP OF PAGE。

SKIP TO TOP OF PAGE被执行之后,执行trailer子句(显示固定的page-end
material)之后必须紧接着执行header子句。如果在header或trailer子句有该语句,
将发生死循环。

-8114 页的头尾的行数加上页眉,页脚所需行数超出了或等于页的长度。

检查OUTPUT节和所有HEADER和TRAILER字段中的语句。这些语句用的所有行数必须远小
于指定页长,从而可以打印有用的内容。

-8115 ORDER BY命令中不能有8个以上待排序字段。

ACEGO限定被排序的字段数。你必须减少ORDER BY后所列的字段数。

-8116 ORDER BY命令中有非法下标。

你只能对一个字符显示字段加下标。检查下标。里面不应该有负数,下标数必须在字
符字段长度之内;且第一个数要小于等于第二个数。

-8121 指定的WORDWRAP RIGHT MARGIN值超出限定范围.它必须大于或等于当前列,
小于等于报表的右边界值。

WORDWRAP子句的右边界值用来设置一个比整个报表的右边界略窄的边界。WORDWRAP显
示的有效左边界是处理WORDWRAP时的当前列。右边界必须在当前列和报表的右边界之
间。

-8122 在PAGE HEADER或PAGE TRAILER子句中不允许用NEED n LINES。

一页的头部和尾部的大小是在PRINT语句中建立的。想把页弄得大一些,使用不带参数
的PRINT语句。

-8123 在FIRST PAGE HEADER,PAGE HEADER或PAGE TRAILER子句中不允许有
PRINT FILE命令。

ACEPREP需要知道头尾部分需要多少行(否则它不知道每页具体该放多少行)。因为编
译报表时无法预言文件的大小,所以不允许有PRINT FILE命令。你需要用PRINT
语句生成该数据。

-8124 上述查询中的一个用户变量在DEFINE节中未定义。

SELECT语句中命名的一个变量在报表的DEFINE节未定义。检查SELECT中的所有名字是
否都是你所要,确认没有拼错的字段或变量名。

-8125 SELECT节有不止一个END关键字。在SELECT节内部,用分号分隔SQL语句。只
在SELECT的最后用END关键字。

请查看SELECT节,确认所有SELECT语句中除最后一句都有分号,且最后一句紧跟END
语句。也许你在该部分开始时少了FORMAT语句。

-8126 PARAM[0]不能被定义。

在PARAMETER语句中定义的第一个参数是1号。在一些主机操作系统中,0号参数事先
设置为程序名,但在报表中不能使用这个值。

-8127 报表说明中不能用多个REPORT TO语句。

整个报表只能指向一个目标文件,它在OUTPUT节REPORT TO语句中指定.。一个报表不
能被分到几个目标文件中,所以只保留第一个REPORT TO语句,其它删去。如果你想对
几组数据产生各自的报表文件,那可按下面中的某条去作:

* 为每套数据写一个单独的报表。(报表说明只在SELECT语句中有所不同)
* 产生一个完整的报表,将每套数据分到不同页,以后用操作系统实用工具将其
分离成为不同的文件。
* 在SELECT语句中用参变量,这样在运行报表时你可以动态地选择数据子集合,
也用REPORT TO PRINT语句,这样你可以通过在开始报表前设置DBPRINT变量,达到
控制输出到某个目标文件的目的。

-8128 VARCHAR变量最小长度必须比最大长度小。

VARCHAR变量由两个数定义:<变量名>;(n,r),n是变量的最大长度,r是保留长度。尽
管报表变量也允许如此定义,保留长度只在数据库表定义的上下文中才有意义。如果
你指定它,必须使它小于或等于n。

-8129 对于缺省报表,指定的页长<长度>;太短。

指定的行数作为报表的页长不合适。增加每页的行数或修改报表说明,使它具有较少
行数。例如修改头或尾的边界行数。

-8130 一个INTEGER类型的常量不能比2147483647大。

该语句指明整数的最大允许值。改用一个较小的值或换一种数据类型,例如DECIMAL
类型。

-9001 只有CHARACTER类型字段才可以加下标,或者在打印时后面不用跟空格。

你对一个非字符型变量,或是想加下标,或是想对它用CLIPPED函数;或者错误地指定
了该变量的类型。

-9002 在PMIM中发现未知操作码。

发生ACEGO内部错误。检查ACEPREP编译器版本同ACEGO版本是否一致。若一致,
重新编译报表以确信.arc文件未被损坏。如错误仍发生,请记录所有情况并与
Informix 的技术支持部门联系。

-9003 USING格式串只能包含一个'.'。

确定某数的显示的格式串包含了一个以上的小数点。参照参考手册中的USING函数的说
明,去掉多余的小数点。

-9004 字段<名字>;不在当前表中,或用户变量<名字>;未被定义。

所显示的名字与数据表中的字段或定义的变量毫无联系。检查它的拼写是否正确。如
果你把它当变量,在DEFINE部分添上它的定义。如果你把它当数据字段,则检查表是
否被改过或它的字段已被更名。

-9014 用法: SACEGO [-q][-d <数据库>;] <报表名>;

标志:
-q SACEGO 将不打印任何错误或消息。
-d SACEGO 将使用-d选项指定的数据库名,以取代报表的DATABASE节中指定的数
据库名。
当没有给ACEGO合适的命令行参数时,该信息将出现。可能有另外的信息告诉你是怎么
回事。有时候,你可以使用手册中描述的-s选项代替-q;它们是等效的。

-9025 字段<名字>;不在当前表中。任何被用作ORDER BY字段的字段必须在当前表中。

显示的字段名出现在ORDER BY之后,但它不是某字段的名字或该语句所选表达式的显
示标签。

-9046 报表输出文件<文件名>;打不开。可能是由于权限问题。

报表通过REPORT TO语句或DBPRINT环境变量内容将报表指向所说的目标文件。请查明
目标文件拼写正确。请查明你的帐号在此操作系统下有写的权限,且目标盘可写,且
没有满。

-9047 输出文件<文件名>;无法建立。

可能的原因有:那个目录你没有写的权限;磁盘空间已满;或你对它的操作超越了所打开
文件个数的允许权限。

-9048 管道<管道说明>;不能打开。

报表被定向到REPORT TO语句说明的管道。请查明所有语句中的的程序名拼写都正确;
程序都存在;且都在当前执行路径下。参看操作系统的出错信息,该信息可能会指示出
错原因,例如,给出系统内存不够的信息。

-9049 命令行中的输入参数不能被转换成为所需数据类型<类型>;。

命令行的值在DEFINE部分PARAMETER语句中被定义为数据类型的<类型>;。但命令行实际
给定的值不能转换成该种类型。请检查以下几点是否满足:
* <类型>;是数值类型,则应当作为一个数读入。
* <类型>;是MONEY,则参数不应带有货币符号。
* <类型>;是CHARACTER或VARCHAR,则参数不能超过所定义变量长度。
* <类型>;是DATETIME,则参数要用标点正确分隔(参照用户指南中的DATETIME
和INTERVAL相关附录部分)。
* <类型>;是DATE,则输入数据应是用标点正确分隔的。
注意 标点分隔正确的DATE,DATETIME,INTERVAL值,包含对操作系统可能有
特殊含义的字符。因此,问题可能是虽然参数正确但需要引号将其引起来。

-9050 用户变量<名字>;是<类型>;类型的。输入值越界或无法转换为那种类型。

PROMPT语句提示用户输入值,该值被存入所示类型的变量名。但是,输入值却不能被
转换为该变量的数据类型(参看-9049错误对转换的论述)。重新运行报表,输入正确数
据(也可以考虑修改提示串以便更好地引导用户)。

-9051 ACE程序定义的参数数目与命令行中传给ACEGO的实际参数数目不等。

DEFINE部分中用PARAMETER语句定义的参数数目和命令行中的实际参数数目不一致。检
查包含有空格或其它特殊字符的参数是否加了引号。缺少引号会使单个参数变为多个
参数。

-9052 格式串太大。它不能大于79个字符。

USING函数的格式串有大小限制。

-9053 发现.ace文件中有一个未知入口。用SACEPREP重新编译报表,用SACEGO
重新运行它。注意SACEPREP和SACEGO版本一致。

ACEPREP和ACEGO版本必须一致。(为检查程序版本,在命令行加-V选项运行它)。用编
译器ACEPREP重新编译报表,其版本必须和ACEGO版本一致。如已达上述要求,仍请
重新编译报表,以确认.ace文件未被损坏。如错误仍发生,记录所有情况并与
Informix 技术支持部门联系。

-9054 ACE报表被A版本编译器编译。本运行器只能运行版本5到 B。用SACEPREP重新
编译ACE报表说明,然后重新运行SACEGO。

ACEPREP和ACEGO版本必须一致。(为检查程序的版本,在命令行用-V选项运行它)。用
ACEPREP编译器重新编译报表,其版本要和运行器ACEGO版本一致。如已达到该要求,
仍请重新编译报表,以确认.ace文件未被损坏。如果错误仍发生,记录所有现场消
息,并和Informix 技术支持部门联系。

-9055 编译过的报表文件<文件名>;找不着或打不开。

报表<文件名>;在ACEGO命令行命名。它应能在当前目录或DBPATH环境变量命名的某路径
把文件"<文件名>;.arc"定位,但现在既找不到也不能为读取而打开。检查文件名拼写
是否正确,你的帐户是否有权读取它。

-9059 对于ACE报表,选择语句如果不是最后一条选择语句,它必须选择进入某临时
表。

报表中的SELECT部分可能包含不止一条SELECT语句。然而只有最后一句才产生作为报
表内容的行。前面的语句都为临时表准备数据,最后传给报表。修改报表说明,使除
最后的SELECT语句外的所有SELECT语句都包含INTO TEMP子句。

-9060 <名字>;的下标m和n值越界,不符合字段定义的长度

ORDER BY子句中的字段子串不对。当取某字段的子串时,括号中的第一个数指明初始
字符位置,第二个数指明终止字符位置。两个数都至少是1,且都不大于字段或变量长
度。

-9061 'SELECT INTO'语句不能作为ACE报表执行的最后一条选择语句。

报表中可能包含不止一条SELECT语句。最后一句必须产生作为报表内容的行。前面的
SELECT语句用来在临时表格中准备数据,最后的语句将这些传给报表。修改报表说明
使除最后一句SELECT语句的所有SELECT语句都包含INTO TEMP子句。

-9062 在数值向CHARACTER类型用户变量转换时发生错误。CHARACTER类型变量
太短,无法保存结果。

数值向字符转换过程中产生了太多的数值字符,使目标变量无法保持原值。ACEGO
没有截断原值,而是产生错误而停止。你可以重新定义目标变量,或限定转换值的大
小,例如用USING格式字串。

-9063 在ACE中DEFINE语句中有用户定义的函数名<名字>;,但在用户的C静态数据区
中的用户定义函数表里却找不到该函数名。

报表中DEFINE部分包含一个FUNCTION语句,指出某外部函数名将和报表链接起来。(外
部C函数同<pn product name>;ACE报表和PERFORM屏的联用包括在ESQL/C手册中)。但是
每个外部函数的名字和地址必须在一个叫userfuncs的静态数组中出现。该数组和外部
函数的机器码一起,被连接到ACEGO的客户版本上。由于<名字>;在数组中不出现,
ACEGO无法调用它。

检查你的ACEGO版本是否是正确的定制版本。(程序的原始版本不连接外部函数)。检查
函数名拼写是否正确。然后检查C函数来源,确认userfuncs数组定义正确,且<名字>;
确有入口地址。

-9064 运行中串表满了。内存无法分配。

临时字符串可用的数据空间已满。当调用外部C函数时,或处理USING,SPACE,ASCII
内部函数时,临时串被建立。减少了这些表项的使用。

-9065 内存分配失败。

ACEGO分配内存时不能分配一行,一列或一个SQL数据结构所需的内存。所需空间与报
表说明的大小并不直接相关(正如信息文本所提示)。执行报表最多只缺几千个字节。

-9066 写输出报表时出错。

目的报表的打开是正确的,但写它的时侯操作系统提示有错。请看操作系统的出错解
释。最常见的问题是磁盘空间满。

-9067 ACE算术堆栈溢出。这里的表达式太复杂。

降低数学表达式复杂度。一种途径是将其分成几个子式,各个子式值分别用变量表
示。

-9068 一个不是SELECT语句的SQL语句出现在SELECT部分中。只有SELECT语句
或者创建临时表的SELECT语句在SELECT部分是被允许的。

可能在报表说明中SELECT单词被拼错。如果你写了UPDATE或INSERT等别的SQL语句,
删除之。在报表中只有SELECT语句是允许的。(你可以在报表调用的C函数中执行别的
SQL语句。如何将报表与C函数链接起来将在ESQL/C手册中讨论。)

-9070 ASCII输入文件中的记录包括的数据字段太多,甚至比报表中DEFINE ASCII
所定义的还要多。

ASCII文件的一个字段是以定界符结尾的零个或者多个字符的序列(定界符在READ
语句中说明)。在一个记录中定界符与记录中的字段一样多。每个记录中的字段必须一
样多,并且每个字段必须以ASCII语句在报表的DEFINE部分定义。多余的域不被忽视。
请查找信息-9072,帮助你确定发生错误的记录。

-9071 ASCII输入文件中的记录字段比报表中DEFINE ASCII 语句中定义的少。

ASCII文件中的"字段"是以定界符结束的零个或多个字符的序列(定界符在READ语句中
说明)。事实上,每个记录中字段和定界符数目一样多。每个记录中字段数都一样多,
且每个字段必须在报表中DEFINE部分用ASCII语句定义。缺少的字段没有缺省值。察看
-9072号信息,它会帮你找到发生错误的记录。

-9072 从ASCII码输入文件中读入count个记录。

这条消息所提供的信息能帮助你定位ASCII输入文件中的问题的根源。另外一条消息所
描述的问题可以在文件的第count行上找到。

-9140 <行号>;试图除零。结果置为零。

报表说明文件<行号>;行的表达式中有除法操作。在运行中表达式中除数为零。检查表
达式及其数据,修改报表,避免错误再次发生(例如,用IF语句测试零)。错误可能是
由于第一行数据被处理之前用某聚合函数定义了变量。为避免这些,最好在变量使用
之前先赋值,例如从某命令行参数或用PROMPT FOR语句为之赋值。

-9142 数据转换错。

ACEGO试图将字符转换成日期型数据,发现错误。或数据标点错误,或有非数字字符,
或日期自身错误,如"01/32/91"。

-9143 字符,文本,字节数据不能用所使用的格式打印。

USING函数只能应用于数值型数据。修改报表说明。

-9500 下标越界。

该语句是从某字符变量中取子串。方括号内的两个数不对。第一个比零小或比字段长
度大,或第二个比第一个数小。修改表格说明,重新编译。

-9503 不能开启<表格名>;表格。

检查表格名称是否拼错。如果是,数据库中可能没有<表格名>;表格(它可能被删掉或改
名了);如果它存在,你的帐户可能没有SELECT去存取它。或者,若你正使用
INFORMIX - SE数据库服务器,你可能已超过开启文件的限度,这会限制你在SELECT
语句中命名的表的数目。在这种情况下,你可能要更改报表的SELECT部份,以便使用
更多的SELECT语句,每个语句中命名较少的表格。(4.0以上的版本没有这条信息。)

-9503 PRINT FILE <文件名>;不能打开。

所给文件无法为输出打开。查看操作系统的出错信息可以得到更多的提示。可能的原
因有:缺少对文件或目录的应有权限,或磁盘空间已满。

-9504 ASCII函数参数越界。参数必须在0和255之间,包括0和255。

ASCII函数参数必须在0和255之间。检查本函数在报表说明中的用法。如果命令行中参
数就不正确,则可以考虑用IF语句检测。

-16300 标识符太长。

语句中标识符太长。看看是否在两个标识符之间缺分隔符,或选个较短的标识符。

-16301 句法错误。

调试程序命令中有句法错误。检查是否拼错或漏写了关键字或标识符,或有多余参
数,或关键字顺序错误。看看CALL命令后函数名是否漏了括号,或VIEW命令中多了
括号。你可以用help all显示所有命令的两页概要。

-16302 命令中有非法字符。

调试程序命令中的字符限于字母,数字,空格,下划线,和调试程序手册中的"命令句
法记法说明"章节。可能是你误按了一个键,也可能是你在编辑一个读命令的输入文件
时引入了非法字符。如果你要用字处理软件建立或修改一个.4db文件,一定要在
"non-document"或"text-only"方式下存盘。

-16303 命令中有非法整数。

表达式或搜索模式中包含有超过50个字符的数字串。重复这个命令,使用较短的表达
式或搜索模式。

-16304 命令中有非法浮点数。

表达式或搜索模式中有超过50个字符的浮点数串,或多于一个小数点。缩短表达式或
搜索模式,或减少小数点,然后重复命令。

-16305 内存分配失败。

你执行命令所需系统内存不够。当其他用户对内存需求较小时,重新执行该命令。DOS
系统下,最好释放一些磁盘空间。

-16306 引号不匹配。

你可能在一个名字或串中忽略了一个引号,或多了一个引号。用偶数个单引号(')
或双引号(",然后重复命令。

-16307 引号中的字符串太长。

引号中的字符串最长为256个字母。换个稍短的串,然后重复命令。

-16308 漏了函数名。

在CALL命令中你必须指定一个函数名。指定函数名并跟一对括号(),然后重复该命
令。如果函数需要参数,用括号将参数括起来,参数之间用逗号分隔。

-16309 内部缓冲区溢出。

你的命令中字符数太多。调试程序命令能容纳的字符不超过256个。如果你指定的
ALIAS,BREAK,TRACE命令中有许多带括号的命令行,你应考虑用嵌套别名。你可以将
一些功能键或者短的串定义成别名,分别代表少于256个字符的串或一串别名。另一种
方法是用READ命令,而不是别名,来输入多个命令。

-16310 需要关键字。

你忽略了一个必要的命令选项。可以用help all显示所有调试程序命令名,或参考有
关手册。

-16311 不认识的命令名。

你拼错了命令或错误地进行了缩写。你可以用help来看所有的调试程序命令的名字。
如果看似无错,你可能在输入时按了一个不可打印键。

-16312 等号遗漏或位置错误。

同ALIAS没有星号选项一样,LET命令总是需要一个等号。确认你对等号的使用是正确
的之后重新执行该命令。

-16313 缺模块行号。

在BREAK或TRACE命令中,你指定的模块名后跟了一个点和一个非整数。模块名后必须
跟一个点和一个整数行号。

-16314 缺文件名。

如果调试程序已载入,那么你在READ命令或一个输出再定向命令后未指定文件名。指
定输入或输出文件名,重复该命令。
如果你在系统提示符状态下,那就是你用了-F命令行选项调用调试程序,但未指定初
始文件名。或省略-F,或在-F后指定一个.4db初始文件。

-16315 缺右括号。

命令参数中或少了个右括号,或多了个左括号。

-16316 需要一个小整数。

必须为GROW命令提供一个或正或负的整数参数。重复该命令,确定窗口大小需增加的
行数。当前窗口大小与该整数之和必须在1和L-6之间,L是你终端能显示的行数(通常
是24)。

-16317 需要程序变量名。

调试程序LET命令需要三个参数:

* 程序变量的标识符
* 等号(=)
* 为该变量赋值的表达式。

不能识别输入命令中的标识符。

-16318 需要正数或名字。

ENABLE、DILABLE、NOBREAK和NOTRACE命令都需要参数。参数可以是中断点或跟踪点名
字,引用数值,函数名或ALL选项。如果你在命令窗口中输入的参数看似无误,你可能
按了一个不可打印的键。

-16319 内部错误--非法命令。

该信息反映出调试程序中的命令解释模块遇到非期待的条件。如果错误再次发生,记
录下现场消息,并和Informix 技术支持部门联系。

-16320 缺左大括号。

左右大括号({和})必须匹配。

-16321 别名<别名>;是一个已存在的命令关键字。

别名不能是一个完整的调试程序命令。(但你可以指定某关键字的缩写为别名)。用
其它的别名标识符,重复该命令。

-16322 遗漏了目录列表。

调用调试程序时用了-I命令行选项,但没有指定源文件搜索路径。重复这一命令,或
省略-I或指定一个搜索路径。

-16323 用户不能多次指定目录。

在命令行中只能用一次-I选项。然而,在-I后可列多个搜索路径,重复该命令,在-l
的后面列出所有需要的源文件搜索路径,他们之间用逗号隔开。

-16324 用户不能指定一个以上的文件名。

命令行中-F选项只能用一次。只指定一个初始文件,重复此命令。调试程序启动后,
你可以用READ命令执行附加的.4db文件。

-16325 遗漏或多余参数。

你忽略或重复了命令行选项。查看调试程序手册对fgldb命令的描述,然后重复该命
令。当你试图将参数传递到正被调试的程序时,该信息也出现。向程序中传递参数的
正确方法是开始运行程序时,在命令行中指定。

-16326 遗漏了文件名。

如果你在系统提示下调用调试程序,你必须把一个已编译的4GL程序名作为参数(或在
UNIX下,用-V选项表明你只想显示软件版本号)。指定已编译的文件名,然后重复该
命令。

-16327 无法定位<文件名>;文件。

你可能忽略或拼错了一个.4db输入文件的文件名(在READ命令中或-F选项后),或在
VIEW中或命令行中拚错一个.4gl源文件的文件名或路径名。

如果文件名正确且命名的文件已存在,那你应指定完整的路径名。对于一个不在当前
子目录下的.4db文件,或一个不在当前目录下,也不在-I命令行选项中任一个指定子
目录下的.4gl文件,必须指定完整的路径名。

-16328 不能读初始文件<文件名>;。

虽然调试程序发现了你用-F参数指定的文件名,但在读它时发生了错误。查看操作系
统的出错信息可能有更多的细节。如果不是硬件错误,确保你的帐号对文件有写访问
权限,例如尝试显示它的内容。

-16329 路径名太长。

调试程序能接收的最长路径名为70个字符。

-16330 无法读文件<文件名>;。

确认你的READ或VIEW命令中,或调用Debuger时-F选项后文件名是正确的。如果正确,
那文件必定损坏或有读保护。如果你无权读该文件,参考一下你的操作系统管理文档
中存取权限部分,或找你的系统管理员。

-16331 太多的递归别名。

在一些调试任务中,引用其它别名的别名可以节省时间,或者避免调试程序命令行对
字符个数的限制。例如,你可以指定别名1是别名2的子串,而别名2是别名3
的子串,如此到子串5。但你不能在它和你的击键所表示的全扩展命令之间指定多于5
重的别名。

-16332 函数名<函数名>;重复。

所显示的函数名所在的模块正在被装入。但在早些时候装入的模块中已见过具有该名
的函数。这是不允许的。你必须改变应用程序使所有的函数有唯一的名字。

-16333 模块名<模块名>;重复。

所显示的模块名所对应的模块正在被装入,但具有该名的模块已被装入。使用程序员
环境中的程序菜单,确保正被调试的程序的每个模块只有一个份。

-16334 内部错误 - 遇到空的关键字。

该消息反映了一种期待是永不会发生的情形。如果该错误重复发生,请记下所有的环
境并和Informix 技术支持部门联系。

-16335 窗口不能按指定的行数调整。

源窗口或命令窗口的最小行数为一(1),不包括源窗口显示当前模块名的那一行。在一
个标准的24行终端上,每一窗口最大的行数为18或L-6,其中L是终端所支持的行数。
GROW命令的参数不是新窗口的尺寸,而是对当前窗口的增量。如果你想改变调试程序
屏幕上窗口的尺寸,输入GROW命令,在合理的范围内改变窗口尺寸。

-16336 用户必须指定要查看的源文件。

VIEW命令要求有一个4GL源文件名。

-16337 无先前的搜索模式。

你不能输入搜索命令而不指定搜索模式,除非早些时候在相同的调试过程里你指定过
搜索模式。指定有效的搜索模式,重复命令。

-16338 不能继续执行。

只有当4GL程序开始执行(但未终止)后你才能调用CONTINUE或STEP命令。如果被正常终
止或被严重错误终止,使用CALL或RUN命令。开始执行后,你必须通过断点(或,在
UNIX环境,由中断命令)暂停执行,然后才能调用CONTINUE或STEP。另参见调试程序手
册"活动函数和变量"一节。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP