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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-21 00:08:04

作者:oldbank  出处:
-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的多个字段的情况。
阅读(519) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~