Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103640663
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-20 22:20:11

作者:oldbank  出处:
-1251        不能建立共享内存。semget失败。

在服务器用共享内存进行通讯的版本中,应用程序在初始化与服务器的通讯时,调用
操作系统函数semget发生了非期望的错误。查阅操作系统错误信息可以得到更多的细
节。请向安装Informix 共享内存产品的人咨询。

-1252        不能建立共享内存。shmget失败。

在使用共享内存进行通讯的服务器的版本中,应用程序在初始化与服务器的通讯时,
调用操作系统函数shmget发生了非期望的错误。查阅操作系统错误信息可以得到更多
的细节。请向安装Informix 共享内存产品的人咨询。

-1254        不能与远程主机连接。

程序试图打开一个由另一个系统中的数据库服务器管理的数据库,但不能打开与另一
个系统的网络连接。检查DATABASE或CREATE DATABASE语句中指定的节点名。如果那是
你想要的,寻找来自网络元件或操作系统的错误信息。与另一系统的操作者联系,验
证它是活动的且接受网络连接。

-1257        操作系统不能为后端产生分支进程。

"后端"是指数据库服务器。这是一个内部错误。寻找操作系统信息将给出更多信息。
在DOS系统中,你可能是内存不足;退回到操作系统命令行,并再次提交你的程序。若
验证了这不是系统极限的后果或本地问题,请记下所有环境并与Informix技术支持部
门联系。

-1258        不能连上用来与后端通信的共享内存。

"后端"是指数据库服务器。这是一个内部错误。寻找操作系统信息将给出更多信息。
若验证了这不是系统极限的后果或本地问题,请记下所有环境并与Informix
技术支持部门联系。

-1260        在指定的类型间转换是不可能的。

系统将尝试任何有意义的数据转换。然而,有一些转换是不支持的,如INTERVAL
到DATE,DATETIME到MONEY。你可能涉及了错误的变量或字段。确认你已指定了你所要
的数据类型,且数据值的文字的格式正确。

-1261        datetime或INTERVAL的第一个显示字段中数字太多。

一个DATETIME文字的第一个显示字段必须包含1或2个数字(如果它不是YEAR),或者2或
4个数字(如果它是YEAR)。一个INTERVAL文字的第一个显示字段代表单元的个数,且最
多可有9位数字,这依赖它的限定符中指定的精度。请检查此语句中的DATETIME和
INTERVAL文字并且改正。

-1262        非数值字符出现在datetime或INTERVAL中。

DATETIME或INTERVAL文字的格式是很严格的。只能包含十进制数字和允许的分界符:在
年,月,日间的连字符;在日和时间的空格;在时,分,秒间的冒号,和在秒和分数间
的小数点。任何其它字符,或这些字符的次序错误,都被检测为错误。

-1263        datetime或INTERVAL中的显示字段超出了范围或是非法的。

检查此语句中的DATETIME和INTERVAL文字;至少其中一个包含了至少一个非法的显示
字段。在一个DATETIME文字中,年可能是零;月可能不在1-12内;日可能不在1-31
内或与月冲突;小时可能不在0-23内;分或秒可能不在0-59内;或相对指定的精度,分数
的数字太多。

在一个INTERVAL文字中,除了第一个显示字段是一个计数且可有限定符指定的个数的
数字之外,约束是同样的。

-1264        在datetime或INTERVAL尾部的额外字符。

除了空格,DATETIME或INTERVAL文字值之后不能有任何字符。检查此语句是否有
遗漏或非法的标点。

-1265        datetime或INTERVAL运算溢出。

DATETIME和INTERVAL值在内部都存储为DECIMAL值。在此语句中,一个使用DATETIME
或INTERVAL值的算术运算导致了溢出。这是不应发生的。检查为INTERVAL值指定的精
度。如果你想输入的INTERVAL值超过了显示字段允许的数字数,你必须在定义中明确
标识有效数字位数。如果错误重复发生,请记下所有环境并与Informix技术支持部门
联系。

-1266        INTERVAL或datetime对运算不兼容。

有些DATETIME,INTERVAL和数值的算术组合是无意义和不允许的。请检查语句中的数
学表达式。可能其中之一错误地使用了DATETIME或INTERVAL字段或变量。如果没有,
查看你的SQL参考资料中这些数据类型的正确用法。

-1267        一个datetime的计算结果越界。

在此语句中,一个DATETIME计算产生了不能被存储的值。例如,如果一个很大的
INTERVAL加到DATETIME上,就会发生这种情况。请检查语句中的表达式,看是否可以
改变运算顺序来避免溢出。

-1268        无效的datetime或INTERVAL限定符。

此语句包含了一个不可接受的DATETIME或INTERVAL限定符。这些限定符只可是YEAR,
MONTH,DAY,HOUR,MINUTE,SECOND,FRACTION和TO。FRACTION后的圆括号中可以是
一个1到5之间的数。检查语句中遗漏的标点和错放的词。一个常见的错误是多加了
个s,如MINUTES,这是非法的。

-1269        定位器转换错误。

此信息的产生是因为一个要求定位器参数(BYTE或TEXT值的引用)的函数接收的不是一
个有效的定位器(如一个NULL参数)。检查程序逻辑,确认参数是正确的。如果错误再
次发生,请记下所有环境并与Informix技术支持部门联系。

-1270        INTERVAL文字值不能有嵌入的负号。

你可以在一个INTERVAL文字和其它值之间使用负号作为算术运算符,或用负号作为一
个INTERVAL文字的前缀来说明它是负的量。然而你不能在文字之中嵌入负号。如果你
没有这样作,检查语句是否遗漏或错放标点。
-1271        在datetime或INTERVAL分数中遗漏了小数点。

当DATETIME或者INTERVAL文字值的限定符中包含FRACTION一词时,此文字值应该有一
个小数点。此语句中有这样一个文字值但缺少小数点。检查文字的限定符并寻找遗漏
或错放的标点。

-1272        没指定输入缓冲区。

你没有为此函数指定一个输入串,所以转换不能进行。设置输入串参数,再调用函
数。(此函数可能要求用DBTIME环境变量定义格式指令。)

-1273        输出缓冲区为NULL或太小不能保持结果。

当函数被调用并且输出缓冲区的地址空间为null或小于格式串长度时,发生此错误。
重定义地址大小并执行函数。(此函数可能要求用DBTIME环境变量定义格式指令。)

-1274        没指定输出缓冲区。

当输出缓冲区的长度为零或缓冲区指针为null时,发生此错误。版本5.01之后的数据
库服务器不采用此错误信息。

-1275        在DATETIME或INTERVAL格式串中显示字段的宽度或精度无效。

在DATETIME或INTERVAL格式说明中的显示字段的宽度或精度必须是有意义的。显示字
段宽度必须是一个十进制数,带前导零或负号(-)。如果有精度说明,也必须是十进制
数,且用点(.)与显示字段的宽度说明分开。

-1276        格式转换字符不被支持。

格式串中的格式转换字符不是有效的。对照你的嵌入语言的产品手册中关于DATETIME
和INTERVAL格式转换函数的格式转换指令表检查串。可以参看 "Informix SQL指南:参
考手册" 第四章中关于DBTIME环境变量的详述。

-1277        输入与格式说明不匹配。

确认包含DATETIME或INTERVAL值的ASCII串与格式串一致。例如,在DATETIME或
INTERVAL  ASCII串中的一个百分号字符(),在格式串中必须有一个匹配序列"%%"。可
以参看 "Informix SQL指南:参考手册" 第四章中关于DBTIME环境变量的详述。

-1278        无效的转义顺序。

检查语句的LIKE或MATCHES子句中指定的模式匹配串。在ANSI数据库中,可以有效转义
的字符只有: LIKE子句的%,_和转义字符,MATHES子句的*,?,[,]和转义字符。

-1279        值超过了字符串字段的长度

这条信息仅出现在ANSI数据库中。试图将一个字符串主变量插入到一个CHAR,NCHAR,
VARCHAR,或NVARCHAR字段中,但字符串太长了。

-1280        libgen.so与Library API不兼容。

和你的客户应用程序一起编译的libgen.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libgen.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1281        libos.so与Library API不兼容。

和你的客户应用程序一起编译的libos.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libos.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1282        libsql.so与Library API不兼容。

和你的客户应用程序一起编译的libsql.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libsql.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程序。

-1283        libgls.so与Library API不兼容。

和你的客户应用程序一起编译的libgls.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libgls.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程序。
-1301        这个值不在有效的可能范围之中。

本字段可接受的值的列表或范围已被建立(由屏幕表格说明中的INCLUDE属性)。你必须
输入一个在可接受范围之内的值。

-1302        两次输入是不同的--请再试一次。

为防止敲键错误,此显示字段已被指定VERIFY(在屏幕表格说明文件中)。此显示字段
的值必须被同样地输入两次。仔细地重输数据。你也可以用中断键取消屏幕表格输入
(通常是CTRL-C,但要看程序作者提供的操作说明)。

-1303        由于存在图片你不能使用这个编辑特性。

此显示字段被(在屏幕表格说明文件中的)PICTURE属性指定了格式。当你编辑这样的显
示字段时,特定的编辑键(例如,CTRL-A,CTRL-D和CTRL-X)是不允许用的。只能用输
入可打印字符和退格输入值。

-1304        显示字段中的错误。

你已经在显示字段中输入一个值,但不能被存储在接收它的程序变量中。例如,你输
入一个十进制数,而应用程序只提供了整型变量;或你可能输入了一个超出应用程序
期望长度的字符串。记下所有环境并且和写应用程序的人讨论这个问题。

-1305        这个显示字段要求一个输入值。

游标在已被指定REQUIRED的屏幕表格显示字段中。在游标能移动到另一显示字段之前
你必须输入值。然而,你可以通过敲入任何可打印字符再退格消去的方法来输入null
值。代替地,你可以用中断键取消屏幕表格输入(通常是CTRL-C,但要看程序作者提供
的操作说明)。

-1306        为了校验请再敲一遍。

游标在已被指定VERIFY的屏幕表格显示字段中。在游标能移动到另一显示字段之前,
你必须输入同样的值两次。这是为了确保在数据输入中没有敲键错误。你也可以用中
断键取消屏幕表格输入(通常是CTRL-C,但要看程序作者提供的操作说明)。

-1307        不能插入另一行,输入数组已满。

你正在输入数据到一个记录数组,此数组在程序中用程序变量数组表示。这个数组现
在是满的;没有地方来存储另一个记录。按ACCEPT键(通常是ESCAPE,但要看程序
作者提供的操作说明)来处理你已输入的记录。

-1308        不能删除行 - 此行没有数据。

你在一空行上按下删除行功能健(通常是F2,但要看程序作者提供的操作说明),没有
任何东西被删除。

-1309        在你进行的方向上没有更多的行。

你在试图在范围外滚动记录数组,或者是在数组顶端向上滚,或者是在数组底端向下
滚。进一步尝试将会是同样的结果,如果那使你高兴就继续吧。

-1310        没有执行一个RETURN语句而结束了当前函数。

当前函数不是返回void类型的,但没有执行RETURN语句就准备退出。

-1312        FORMS语句错误号<号码>。

这是有关于屏幕表格的问题。在本文档中查找错误号。结合当前的语句对它进行分
析。

-1313        SQL语句错误号<号码>。

当前语句访问数据库服务器时后者侦测到错误并且返回一个错误代码号。在本文档中
查找号码。也可寻找其它错误信息。

-1314        程序在语句<行号>行处停止。

在程序的指示点侦测到错误。寻找其它给出本错误细节的错误信息。用本信息中的号
可在程序源文件中定位错误。

-1315        4GL 运行时错误号<号码>。

因为侦测到错误,程序已经停止。在本文档中查找错误代码号。也寻找其它错误信
息,以得到更多细节。

-1316        ISAM错误号<号码>。

当前的语句访问数据库服务器,数据库服务器侦测到了错误(可能显示错误 -1313
报告)。这条信息包含关于错误发生的附加信息。可在本文档中查找号码。

-1317        因为在调用程序和它的函数参数之间或变量和它的赋值表达式之间的
不兼容,发生了数值转换错误。


只要不丢失信息,4GL在两种数据类型间自动转换。在当前的语句里,不能这样做。
首先查看函数调用,检查作为参数传递的值。确认传递的值和参数在函数体内定义的
类型相符。(一个错误的实例是调用函数fun("X"),而函数的参数定义为整数。)
如果是LET语句,确认在右边计算出的值能被左边命名的变量容纳。

-1318        调用函数和被调用函数的参数个数不匹配。

在调用函数时给的参数太多或太少。调用可能在与被调用的函数不同的源模块中。
检查函数的定义和它被调用的所有点,确认使用参数个数与定义的相同。

-1319        4GL程序已经超出了运行时可用的数据空间内存。

你将不得不减少程序要求的数据空间。检查大字符变量的大小和数组的维数。可能需
要将程序分割成可以分别装入的几个程序。

-1320        函数没有返回调用函数期望的数值的数目。

如果函数作为表达式的一部分被调用,那么它返回多于一个的数值。如果使用CALL语
句调用它,那么RETURN语句(函数中)后表达式的数目不同于RETURNING从句(CALL
语句中)中列出的变量的数目。

确认调用了正确的函数。检查该函数的逻辑,特别是它的返回语句,确认总是返回期
望数目的数值。

-1321        VALIDATE命令的执行结果出现确认错误。

VALIDATE语句对照存储于syscolval表中的规则测试当前变量的值。检测出失配情况。
通常程序使用WHENEVER语句来获取这个错误,显示或修正错误的值。检查VALIDATE语
句,找出正在测试的变量,并找出为什么它们是错误的。

-1322        不能打开报表输出文件。

不能打开REPORT TO语句指定的文件。确认你的帐户具有对这样文件的写权限,磁盘未
满,并且你没有超过某些关于可打开文件数目的极限。

-1323        不能打开报表输出管道。

REPORT TO PIPE语句指定的管道不能开始。确认其中命名的所有程序都存在,并在你
的执行路径中是可访问的。还要查看操作系统信息,可能给出更具体的错误信息。

-1324        报表输出文件无法写入。

REPORT TO语句指定的文件已经打开,但写入时出现错误。可能磁盘已满。查看操作系
统信息,可能会给出更多的细节。

-1326        数组变量的引用超过指定的维数范围。

数组下标表达式产生的数值或小于1或大于数组元素的个数。检查直到这条语句的逻
辑,判定错误是如何产生的。

-1327        无法准备插入语句以将数据行插入报表使用的临时表。

在报表函数中,4GL生成SQL语句把数据行保存在临时表中。语句的动态准备(参考
PREPARE语句的参考资料)发生错误。最可能的原因是程序被编译后保持原样,直到运
行时,数据库表格还没有定义;或者数据库已改变或者程序选择了与当前编译不同的
数据库。另外的可能性是数据库管理员已回收你对报表中使用的一个或多个表的
SELECT权限。查看其它错误信息,可能给出更多细节。

-1328        在选定的数据库中,不能创建报表所需的临时表。用户在所定的数据库中必
须具有创建表的权限。

在报表定义中,4GL生成SQL语句将数据行保存在临时表中。但无法创建临时表。最可
能的原因是数据库中没有余下磁盘空间。其它通常的原因是当前数据库存在与临时表
同名的表,报表定义试图创建该临时表作为排序表。排序表被命名为"t_<报表名>"
(例如,报表名是"order_rpt",其排序表将命名为"t_order_rpt")因此,建议用户
定义表时避开以"t_"打头的名字。与一些数据库服务器有关的-1328错误另外可能的
原因是,你超过打开文件的操作系统极限。查看其它错误信息,可能会获得更多的
细节。

-1329        无法创建报表所需的临时数据库表的数据库索引。

在报表定义中,4GL生成SQL语句把数据行保存在临时表中。但无法创建该临时表的索
引。最可能的原因是在数据库中存在同名的索引(排序索引被命名为"i_<报表名>"
"i_order_rpt")。另一通常的原因是在文件系统或dbspace中没有磁盘空间可用。
另外,与某些数据库服务器有关的可能性是你已超过打开文件的操作系统极限。查看
其它错误信息,可能获得更多的细节信息。

-1330        往临时报表中插入一行失败。

在报表定义时,4GL产生往临时报表中存入行的SQL语句。然而,当这些行被插入时,
有错误发生。有可能的原因是数据库磁盘空间不够。查阅其它的错误信息,可以得到
更多的细节。

-1331        无法从报表临时表中获取数据行。

在报表定义中,4GL生成SQL语句从临时表中取数据行。已成功地创建了表,但从中检
索数据行时出错。唯一可能的原因是硬件失败,或数据库服务器出错。查看操作系统
信息,以获取更多细节。

-1332        字符变量引用的下标超出范围。

在当前语句中,用于提取字符值子串的变量包含小于1的数,或大于变量大小的数,或
者第一个子串表达式大于第二个。检查直到这条语句的程序逻辑,找出错误的原因。

-1333        串的长度大于512,不能从函数调用中被返回。

当前RETURN语句包含一个表达式,其结果是长于512个字符的字符串。它不被支持。检
查函数的逻辑,并修改它,使之不返回如此长的字符串值。更长字符串可赋予全局变
量。

-1334        4GL程序不能为临时串的处理分配更多的空间。

在一个比4.1版高的环境上编译的程序执行时,不应看到这条出错信息;然而4GL
的4.1版或更早的版本上编译的程序必须处理这个问题。

当求字符串表达式的值时会用到“临时”串的存贮。临时串的存贮分配是从一个固定
大小的缓冲区中通过一个简单算法实现的。在最后一个未解决的字符串表达式完成
前,缓冲区中的空间是不能被利用的。因为大多数表达式结束很快,所以该串缓冲区
通常用起来快,清空也快。

然而当表达式涉及到函数调用时,表达式的求值在函数调用期间搁置起来。在函数调
用返回前,缓冲区不能清空。例如,在下面的语句中:        LET charvar=numvar 
USING '###', myfunc()
临时空间用于文字串'###'和USING操作符的结果。这些被搁置的值在myfunc()函数调
用期间一直保留在串缓冲区中。如果在myfunc()函数和它的子函数求值期间用到的临
时串值总量超过了缓冲区的大小,就会发生这里的错误。

通过将函数调用分配在几个语句中,通常是可以避免上述错误的,如下面的例子:   
         LET charvar=myfunc()
            LET charvar=numvar USING '###', charvar clipped
在调用第一个语句的函数myfunc()期间,串缓冲区是空闲的,当第二个语句执行完
后,串缓冲区又是空闲的。

CASE语句中WHEN子语句的缩减形式也会产生被搁置的字符表达式。下面例子中,在整
个函数func_A()和func_B()调用期间,临时串存贮空间将不予使用。
CASE      charvar
                WHEN  'A' CALL   func_A()
                WHEN  'B' CALL   func_B()
                       ...

WHEN子句的完整形式不会产生上述问题,因为字符表达式的求值在函数调用开始时就
结束了。                CASE
                WHEN   charvar='A'   CALL func_A()
                WHEN   charvar='B'   CALL func_B()

当WORDWRAP子句出现在PRINT语句中时,INFORMIX-4GL的4.1版中的某些版本中的一个
熟悉的错误会引起上述类型的假错误。如果这个错误重复发生,请注意一下所有的环
境并和Informix 技术支持部联系。
阅读(942) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~