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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-21 00:05:00

作者:oldbank  出处:
-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        不能为数据库转换获取排他锁定。

正在运行数据库服务器的新版本,并且刚好首次以这个软件级别打开了一个数据库。
该数据库服务器已经试图通过定义附加的系统目录表来自动地升级数据库。然而,
这需要锁定数据库,以便独占使用,来完成这次转换,但其它用户已将该数据库打开
了。请稍候,然后再重新试一下这个语句。到那时,这个数据库可能被释放了(或
者其它用户的操作已将它更新了)。 

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