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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-21 00:01:18

作者:oldbank  出处:
-691        在参照约束<约束名>的参照表中遗漏键。

一个参照约束被违反。这种情况常常发生在试图将值插入到一个是某个参照约束的一
部分的字段中,或修改这样的字段的值时发生。试图键入的值在参照的(父键)字段
中不存在。如果使用级连的删除,数据库日志必须打开。

-692        约束<约束名>的键值仍然被参照。

违反了一个参照约束。这种情况常常在试图删除正被另一行(子键)参照着的一个字
段中的一行(父键)时发生。如果使用级连的删除,数据库日志必须打开。

-693        系统命令期待一个非null值。

一个null值被传递给SYSTEM语句。

错误的例子:

DEFINE c CHAR(100);
        LET c = NULL;
        ...
SYSTEM c; -- 错误

-694        太多的参数传递给过程<过程名>。

传递给过程的参数比过程说明接受的参数多。

-695        参数不是过程<过程名>的一个参数。

一个命名的参数被传递给一个过程,但那个命名的参数不存在。

错误的例子:

CREATE PROCEDURE testproc (arg1 INT, arg2 INT)
        RETURNING INT;
        ...
        RETURN 1; END PROCEDURE SELECT col FROM tab WHERE testproc
        (arg1 = 10, arg5 = 20); --错误

-696        变量<变量名>有未定义的值。

一个变量被使用但从未赋一个值。

错误的例子:

DEFINE i, j INT;
LET i = j + 1; -- 错误

更正:在使用各个变量和参数之前赋予它们一个合法的值。

-697        STEP表达式求值得ZERO。

一个FOR语句的STEP表达式计算得零。

错误的例子:

LET e = -1;
FOR i = 10 TO 20 STEP e+1; -- 错误
        ...
END FOR

更正:改变STEP表达式使得它计算出一个非零的值。

-698        不一致的事务。服务器的数和名称滚回<服务器>。

如果有INFORMIX-STAR两阶段提交或分布式事务以混合结果实现时,则返回该信息。这
就是说,一些参与该事务的OnLine数据库服务器滚回了整个事务中它们那个部分,但
另外一些数据库服务器则提交了整个事务中它们那部分。滚回工作的数据库服务器的
数目总是精确的但服务器名称的列表(被DBSERVERNAME值指定的)可能是不完整的。
如果大量的服务器滚回工作,列表可能被截断到保存空间。参考协调者OnLine
信息日志以得到服务器名称的完整列表。如果这个信息返回,你必须决定是否你的网
络数据库系统处在一个不一致的状态。这个过程的详细描述在INFORMIX--OnLine
Administrator's Guide中(或,对版本6.0或更高,在INFORMIX--OnLine Dynamic
Server Administrator's Guide 中)。

-699        事务启发式地滚回。

如果一个INFORMIX-STAR 两阶段提交事务被所有参与的OnLine数据库服务器启发式地
滚回,将返回这个信息。因为全部数据库服务器滚回了这个事务,网络上的数据库系
统依然是一致的。

-700        在一个全局事务中语句是无效的。

当用户试图在一个全局事务中执行一个BEGIN WORK,COMMIT WORK, 或ROLLBACK WORK
语句时产生该错误。

-701        在XA环境中语句是无效的。

在一个X/Open分布的事务处理环境中执行下面任意语句就会产生该错误:

    *   CLOSE DATABASE

    *   CREATE DATABASE

    *   DROP DATABASE 

    *   SET LOG

在这种环境下,可以在一个 xa_open 的调用之后执行一个单一的DATABASE语句来指定
当前的数据库。但是,在该数据库被选择之后,不能执行其它的DATABASE语句。该错
误产生于试图再次执行DATABASE语句时。

-702        不能认排他模式打开数据库。

在一个X/Open 分布的事务处理环境中,不能认排他模式打开一个数据库。

-703        在表<表名>中主键有一个带null键值的域。

不能在一个是主键一部分的字段中插入一个null值。

-704        主键已在表中存在。

一个表只能有一个主键。

-705        不能取消/修改过程<过程名>。它当前正在使用中。

试图取消一个正在执行的过程,或在当前正在执行的过程上执行一个UPDATE
STATISTICS。该错误发生在一个过程试图取消它本身或一个嵌套的过程试图取消调用
它的过程时。

错误的例子:

CREATE PROCEDURE testproc()
        ...
        DROP PROCEDURE testproc; -- 错误END PROCEDURE

更正:可以使用一个 ON EXCEPTION 语句捕获该错误,且不执行DROP PROCEDURE
或 UPDATE STATISTICS语句

-706        在过程<过程名>中执行的权限被取消。

一个用户如果未拥有过程或不是DBA,则必须有执行权限去运行一个过程。

-707        在光盘聚类中的Blob字段必须是不同的。

同一字段在CREATE OPTICAL CLUSTER 语句中FOR子句的字段列表中被指定了
一次以上。改变语句使得字段不能出现一次以上。

-708        光盘聚类<聚类名>已经存在。

试图用一个已存在的聚类名称产生一个新的光盘聚类。必须取消已存在的聚类,或用
一个不同的聚类名称重执行该语句。

-709        Blob字段<字段名>已经聚类。

已经用命名了的blob字段产生了一个光盘聚类。因为一个单一的blob字段只能是一个
光盘聚类的一部分,因此试图在该字段上产生一个新的聚类失败。

-710        表<表名>已经取消、更改或改名。

这个错误可能在明确准备好的语句中发生。这些语句具有形式:

PREPARE 语句 标识号 FROM 带引号的字符串

当一个语句在一个数据库服务器中准备好以后且用户执行它之前,表被改名或更改,
可能是改变表的结构。结果将出现问题。

这个错误也可能在存储过程中发生。在数据库服务器第一次执行一个新的存储过程之
前,它优化在存储过程中的代码(语句)。优化使代码依赖于过程参照的表的结构。
如果在过程优化后,但还没有执行前,表结构改变了,将产生这个错误。

每个存储过程在它第一次运行(而不是它被创建)时被优化。这种行为说明一个存储
过程在它第一次运行时可能成功,但以后在同一个实际的环境中会失败。存储过程的
失败也可能是间歇的,因为在一次执行中的失败将强制一个内部警告在下一次执行以
前重新优化过程。

数据库服务器有一个存储过程显式参照的表的列表。无论何时这些显式参照表中的一
部分被修改了,数据库服务器在过程下一次执行时重新优化该过程。

但是,如果存储过程依赖于一个只是间接参照的表,数据库服务器无法在表被改动后
发现重新优化过程的需要。例如,如果一个存储过程调用了一个触发器,一个表就能
被间接参照。如果被那个触发器参照(但没有被存储过程参照)的表改变了,数据库
服务器不知道它应该在那个存储过程运行以前将其重新优化。当该存储过程在表被修
改后运行,这个错误可能发生。

使用下面两种方法之一从这个错误中恢复:

    *   发出UPDATE STATISTICS 语句以强制重新优化过程。

    *   重新运行该过程。

为了防止这个错误,可以强制存储过程的重新优化。要强制重新优化,执行下面的语
句:

UPDATE STATISTICS FOR PROCEDURE <过程名>

可以将这条语句用下列的任一方法加在程序中:

    *   将UPDATE STATISTICS 语句放在每个改变了对象模式的语句后面。

    *   将UPDATE STATISTICS 语句放在每个存储过程执行之前。

更有效地,可以将UPDATE STATISTICS 语句和程序(改变对象模式或执行过程)中不
经常发生的动作放在一起。大多数情况下,程序中不经常发生的动作是对象模式的改
变。

当按照这种办法从这个错误中恢复时,必须为每个间接参照了改变的表的过程执行
UPDATE STATISTICS 语句,除非该过程也显式地参照了这个表。

也可以通过简单地重新运行存储过程来从这种错误中恢复。存储过程第一次失败时,
数据库服务器标志该过程为需要重新优化。下次运行这个过程,数据库服务器在运行
它之前优化它。但是两次运行存储可能既不实用也不安全。一个安全的选择是使用
UPDATE STATISTICS 语句来强制过程的重新优化。

-711        不能插入编码的BLOB描述符。

使用DESCR() 函数插入一个编码的blob描述符失败。参看ISAM 错误以得到更多的信
息。

-712        不能在非光盘的BLOB字段上插入编码的BLOB描述符。

试图使用DESCR()函数在一个存储在dbspace 或 blobspace中的 TEXT或BYTE字段中插
入一个编码的blob描述符。只能使用该函数将描述符插入存储在光盘媒体上的blob
字段。

-713        不能为BLOB描述符解码。

一个blob描述符在插入数据行之前解码失败。参看从光盘子系统中来的的错误(在
7000到7199范围中的错误)以得到更多的信息。

-714        不能为BLOB描述符编码。

一个为了在光盘媒体中存储的blob描述符的编码失败。参看从光盘子系统中来的错误
(在7000到7199范围中的错误)以得到更多的信息。

-715        事务状态错。

检索事务状态错误。参看ISAM 错误以取得更多的信息。
 
阅读(625) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~