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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-21 00:08:35

作者:oldbank  出处:
-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        不能打开审计追踪文件。

数据库服务器需要为此表而使用审计追踪文件,但是某种意外的错误阻止了它。硬件
错误、文件权限问题、不小心删除了审计追踪文件都可能导致该错误。请查看操作系
统错误信息,它可能会提供更多的信息。
阅读(586) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~