-286        主键字段<字段名>的缺省值是NULL。
作为主键一部分的字段不能有null作为它的缺省值。
-287        不能增加序列字段<字段名>到表中。
不能将数据类型SERIAL的字段加到存在的表中。这样的字段不能含有null值,但当增 加一个字段时,数据库服务器必须把null值放入所有存在的行中。可以用三步增加序 列字段。首先用一个INTEGER数据类型增加该字段。然后把非null的、唯一值放入新字 段的每一行中,更新表。最后,使用ALTER TABLE MODIFY改变该字段的数据类型为 SERIAL。
-288        表<表名>未被当前用户锁定。
这条UNLOCK TABLE语句命名一个还没有被锁定的表。如果你早些时候锁定该表,那么 它已经被解锁。在事务处理结束或数据库关闭时,表自动解锁。如果另一个用户锁定 表,你不能解开它的锁。
-289        不能以需求的方式锁定表<表名>。
该表已经以排它方式锁定。必须在处理之前等待该表解锁。
-290        游标没有用FOR UPDATE子句说明。
这条语句试图用未被说明用于修改的游标来修改。由于为防止程序错误而设计的安全 度量和性能特征的原因,数据库服务器不允许这种操作。为了使用有UPDATE或DELETE 语句的游标,必须说明它以便修改。检查程序逻辑以确信在这条语句中使用想要用的 游标。
在符合ANSI标准的数据库中操作时,任何游标可以被用于修改;不需要FOR UPDATE 子句(会产生一个警告)。
-291        不能改变表的锁定方式。
当前的LOCK TABLE语句不能被执行,因为已经用不同方式(EXCLUSIVE或SHARE) 锁定同一个表。为改变锁定方式,在再次锁定之前要对这个表解锁。
-292        隐含的插入字段<字段名>不接收NULL。
这条INSTER语句不对表中的所有字段提供值。至少忽略了一个字段限制不能为null。 因为数据库服务器必须为每个未提及的字段插入null值,它不能执行这种插入。对照 表的定义检查语句。可能表的定义已经改变。
-293        IS [NOT] NULL的谓词只能被简单字段使用。
对于null值的测试可只适用于<字段名>(例如不适用于带下标字符的字段或表达式) 。检查WHERE子句中关键字的用法。
-294        字段<字段名>必须在GROUP BY列表中。
在分组的SELECT中,必须在GROUP BY子句中列出每个非统计字段,以确保在每一分组 行中每个选定的字段有定义好的值。一个字段或是包含一个统计值,或是包含对那个 组来说是唯一的值。如果选定的字段既不是统计值又不在列表中,在同一组中可能那 个字段有两个或多个值,数据库服务器不能选择要显示哪一个。修正查询以便在该子 句中包含该字段名或它的位置号。
-295        被参考表和参考表必须在相同的数据库中。
参考限制不能跨数据库。换言之,被参考字段和参考字段(或父键和子键)必须在相 同数据库中。
-296        被参考表<表名>没找到。
在参考限制中指定的被参考表不存在。
-297        不能找到对参考表<表名>的唯一限制和主键。
数据库服务器不能把参考的限制放在sysconstraints系统目录表中,参考的限制不是 在相同的ALTER TABLE语句中作为参考限制创建的。参考的限制不存在。检查是否输 入有相应限制的有效字段名。有效的限制字段说明了一个内部错误。如果错误再次发 生,请记录详细情况并与Informix技术支持部联系。
-298        不能用授予选项授予public权限。
子句WITH GRANT OPTION允许接受者授予他人相同权限的授权。在这种情况下,授权的 接受者是PUBLIC。如果执行这条语句,每个人将有该权限,而且每个人能授权。该权 限禁止这种操作。或者指定被授予者,或者删除子句WITH GRANT OPTION。
-299        不能授予本身权限。
这条GRANT语句把你的用户id作为一个被授予者。如果你能授予该权限,你就已经有该 权限。检查语句,从TO子句去掉你的用户名。
-300        有太多的GROUP BY字段。
在GROUP BY子句中可以列出的字段数是数据库服务器的实现限制。所有数据库服务器 至少支持8个字段。检查当前语句,确信GROUP BY子句的标点是正确的。如果是你想象 的,你就必须寻找用两步或两步以上做这件事的办法。因为所有非统计的选择字段必 须在 GROUP BY子句中列出,而列表的长度受限制,就必须只选择区别每组所必须的 非统计值。把该组的结果放入一个临时表,把这个表连接到原来的表以选择其它 非统计值。
-301        GROUP BY字段的总数太大。
数据库服务器限制在GROUP BY子句中列出的组合字段的字节总数。所有数据库服务器 至少支持120个字节。更多的信息参考错误 -300的讨论。
-302        对多表视图没有GRANT选项或选项非法。
这条GRANT语句不能被执行。无权为这个表授予指定的权限,表名是一个别名;或该表 是一个视图,对它不能授予这个选项。为了授予某表任意权限,你必须有这个数据库 的DBA的权限,必须是这个表的所有者,或者被授予相同权限WITH GRANT OPTION。 如果符合其中之一,有问题的表的确是一个不能修改的别名或视图,因此不能用于 插入、修改或删除操作。
-303        表达式把字段和统计函数混淆。
这条SELECT语句在它的WHERE子句中使用统计函数。这种操作是不允许的。WHERE 子句必须在表被扫描时逐行使用,而统计函数只能在所有行被选出和分组后计算。检 查该语句是否这样做了。如果只打算选择某组记录,可以把这样的测试放在HAVING 子句中,它适用于已分组的行。
这条信息的文本有些易使人误解的地方。事实上,你能够在表达式中把字段名和统计 函数混合使用。然而,你只能在选择列表或HAVING子句(不是在WHERE子句)中 做这件事,字段必须出现在GROUP BY子句。
版本5.01后的数据库服务器中不使用这条错误信息。
-304        HAVING只能有统计或GROUP BY子句中的字段的表达式。
HAVING子句用于在分组后选择完成的行。因此它能测试的唯一选择值是能在完成的分 组行中得到的值,名义上是在GROUP BY子句中命名的单值字段和统计值。检查HAVING 子句是否符合这种规则。如果要在分组进行之前选择具体的行,可以使用WHERE子句。
-305        有下标的字段<字段名>不是类型CHAR, VARCHAR, TEXT ,也不是BYTES。
只能从所述类型的字段选择子串。检查在这条语句中使用的所有方括号,确信每个方 括号遵循有这些类型之一的字段的命名。如果是这种情况,检验你使用的是你想要的 数据库,重复检查该表的定义。可能表中的一个字段已经改变,使用了不同的类型。
-306        下标超出范围。
这条语句参考一个字符变量的子串。子串的值(在方括号中的两个数)是不正确的。 第一个小于零或大于字段的长度,或者第二个小于第一个。检查语句中使用的所有方 括号,找出错误。可能是改变了某字段的字长,使子串工作时失败。
-307        不合法的下标定义。
这条语句参考一个字符变量的子串。子串的值(在方括号中的两个数)是不正确的。 第一个小于零或大于字段的长度,或者第二个小于第一个。检查语句中使用的所有方 括号,找出错误。可能是改变了某字段的字长,使子串工作时失败。
-308        对于每条UNION语句,相应的字段类型必须是一致的。
在SELECT语句的UNION中产生的所有行必须有相同的格式。因此每个字段应该有相同 的数据类型。在当前语句中,在第二条或接下去的SELECT中的某字段和前面的SELECT 中的同一字段不一致。检查和比较所有SELECT语句。核对选择的东西与前面的SELECT 语句不相同的语句的每一个地方。在UNION期间不提供自动的数据转换;数据类型在 选择时必须相同。如果不可能,考虑建立临时表并使用一系列INSERT语句来与想要的 行结合以作补充。在INSERT期间提供自动的数据转换,因此这样有差别但兼容的 数据类型可以被改成相同类型。
-309        ORDER BY的字段<字段名> 必须在SELECT列表中。
所示的字段出现在这条SELECT语句的ORDER BY子句中,但它不在选择列表(词SELECT 之后的值列表)中。这种操作是不支持的。所有分类键必须以分类的顺序出现在输出 行中。修改语句使之符合这一规则。如果只想对涉及这个字段的表达式排序,不是对 字段本身,则可以在列表中按它的位置号参考表达式。
-310        数据库中已存在表<表名>。
这条语句试图创建所示名字的一个表,但那个名字的表已经存在。在一个数据库中只 能存在一个给定名称的表。(在符合ANSI标准的数据库中,表是由创建它的用户的名 称限定的,因此每个用户只能有一个给定名称的表。)
检查那个名称的拼写,如果与你所想的一样,你应确认它不存在,确认你正在使用的 数据库是你所想的。你可以通过查询如下的systables,检查在这个数据库中的所有表 名。
SELECT tabname FROM systables WHERE tabid > 99
该语句将只显示永久表的名字,而没有临时表的名字。临时表不出现在systables 中。如果该名字不出现,结束数据库会话并启动新的数据库,临时表将被取消。
(本文已被浏览 2717 次)
|
|