Informix 动态服务器错误代码中文详解(一)

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上的磁盘),就有可能发生这个错误。这个错误一般是暂时的,反映了文件服
务器的崩溃和后来的重新启动。重新安装文件系统到你的工作站上并重新运行你的
应用程序。


-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        在查询处理中分配内存失败。

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

在一段延迟后再次执行该查询。如果仍然失败,向你的系统管理员咨询。如果可能的
话,修订你的查询,联结较少的表或是对较少的字段排序或分组,或是使用两个或多
个语句来完成查询。在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 DESCRIPTOR 子句,但它还参考一个用主机变量说明的游标(即
用 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        连接必须建立在登记回调函数之前。

在连接到一个数据库服务器之前,试图登记回调函数。首先必须连接到一个数据库服
务器,然后登记回调。

-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 DESCRIPTOR 语句分配好描述符的名字,然后才能使用它。

-470        出现的值必须大于零。

如果在 ALLOCATE DESCRIPTOR 语句中包含 WITHMAX <出现>子句,则必须指定一个
大于零的<出现>的值。改变<出现>的值成正的整数,并再次执行ALLOCATE
DESCRIPTOR语句。


-471        使用了一个无效的描述符名字。

本错误在 SQL  描述符的名字是一个空字符串或是一个未被初始化的宿主变量时
产生。描述符的名字遵循和标识符一样的命名规则。检查描述符的名字并检验它已经
用SET  DESCRIPTOR 语句设置或用ALLOCATE DESCRIPTOR 语句分配或被初始化。

-472        出现的值超出范围。

改变 COUNT 语句的值使其小于或等于<出现>的值并且大于零,然后再试一次。

-473        指定数据类型不是X/Open标准类型本错误发生在GET DESCRIPTOR 或 SET
DESCRIPTOR语句在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 DESCRIPTOR 语句中请求
INDICATOR 值。

-476        当类型为 SQLCHAR 时,LENGTH 字段必须被指定。

当使用 SET DESCRIPTOR 语句,并且  TYPE  设置为SQLCHAR时,则 LENGTH
字段在同一个 SET DESCRIPTOR语句中也必须被指定和设置。

-477        缓冲区太小。

在 GET DESCRIPTOR 语句中,指定用来存储 NAME 表项的缓冲区(字符宿主变量)太
小。增大缓冲区大小并再次调用 GET DESCRIPTOR 语句。本出错信息在宿主变量是
FILE 类型时也会被显示,而且用于存储其名字的缓冲区是太小的。

-478        用户必须指定TYPE。

在初始状态,当用户执行一个 SET DESCRIPTOR 语句时,必须指定 TYPE 作为要设置
的字段之一。在SET DESCRIPTOR 语句中设置 TYPE 字段并再次执行。

-479        DESCRIBED字段数大于分配的空间。

在表中的字段数大于分配的描述符。使用ALLOCATE DESCRIPTOR 语句去重新分配一个
更大的出现值,并重试 DESCRIBE 语句。

-480        有相同名字的描述符已经存在。

具有相同名字的一个系统描述符区域已经被分配,所以本描述符是不唯一的。在
ALLOCATE DESCRIPTOR 语句中改变描述符的名字,使描述符成为唯一的,并再次执行
本语句。

-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 DESCRIPTOR语句从未初始化的 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
技术支持部联系。

-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错误码以得到更多的信息。
可能需要更完整的路径名;文件虽然存在但是你的帐户没有对它的写权限;或者是磁
盘已经满了。

-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代替。

-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。详见系统安装手册。


你可能感兴趣的:(数据库,服务器,database,insert,Informix,数据库服务器)