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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-21 00:07:36

作者:oldbank  出处:
-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语句 关闭。 

 
阅读(518) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~