SQL 信息 ID
|
消息
|
说明
|
用户响应
|
---|---|---|---|
SQL0000W |
语句处理成功。 | 除非发生警告,否则 SQL 语句已成功执行。 | 检查 SQLWARN0 以确保它是空白。 如果为空白,那么语句已成功执行。 如果不是空白,那么存在警告条件。 检查其他警告指示符,以确定特定的警告条件。 例如,如果 SQLWARN1 非空白,那么字符串被截断。
sqlcode:0 sqlstate:00000、01003、01004、01503、01504、01506、01509 和 01517 |
SQL0001N |
绑定或预编译未成功完成。 | 由于在先前消息中指定的原因,绑定或预编译请求不成功。
未创建程序包。 |
请参阅消息文件中的消息。 重新提交该命令。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 |
SQL0002N |
绑定文件名无效。 | 由于在先前消息中指定的原因,绑定文件名不能按指定方式使用。
未创建程序包。 |
请参阅消息文件中的消息。 重新提交该命令。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 |
SQL0003N |
数据库名称无效。 | 由于先前消息中指定的原因,不能按所指定方式使用数据库名称。
未创建程序包。 |
请参阅消息文件中的消息。 重新提交该命令。 |
SQL0004N |
密码无效。 | 密码包含无效的字符,或密码太长。
未创建程序包。 |
重新提交该命令,并指定有效的密码。 |
SQL0005N |
消息文件名无效。 | 由于在先前消息中指定的原因,不能按所指定方式使用消息文件名。
未创建程序包。 |
请参阅消息文件中的消息。 并检查消息文件的名称。 如果消息文件存在,那么检查它的属性。 重新提交该命令。 |
SQL0006N |
日期时间格式参数无效。 | 日期时间格式参数的值不在有效范围 0 到 3 之内。
未创建程序包。 |
用有效的格式参数重新提交命令。 |
SQL0007N |
由于该 SQL 语句中包含 SQL 语句中不受支持的字符,因此未处理该语句。 无效字符:字符。 无效字符之前的文本:文本。 | 指定的字符不是 SQL 语句中的有效字符。 文本 运行时标记指示无效字符前的 SQL 语句的 20 个字符。
联合系统用户:某些数据源未向 字符 和 文本 运行时标记提供适当的值。 在这些情况下,character 和 text 将具有以下格式:“<data source>:UNKNOWN”,指示指定数据源的实际值未知。 |
移除或替换无效的字符,然后重新提交该语句。
sqlcode:-7 sqlstate:42601 |
SQL0008N |
在主机变量声明中找到的标记 标记 无效。 | 主机变量声明中存在无效语法。 预编译器不能标识主机变量。
无法处理该语句。 语句中声明的主机变量(到分号为止)均不能接受。 |
检查主机变量声明的语法。 |
SQL0009W |
忽略了覆盖预编译选项的尝试。 | 尝试覆盖预编译器选项。
忽略该选项。 |
确保正确指定了所有预编译器选项。 |
SQL0010N |
以 字符串 开始的字符串常量没有字符串结束定界符。 | 语句包含一个以 字符串 开始而未正确终止的字符串常量。
无法处理该语句。 |
检查该语句中指示的字符串常量中是否缺少撇号。
sqlcode:-10 sqlstate:42603 |
SQL0011N |
注释未终止。 | 注释未正确终止。
无法处理该语句。 |
检查该语句,以确定指示的注释中是否缺少或多出了注释定界符。 |
SQL0012W |
列 发生了无限制的相关。 | 命名列发生在一个 SELECT 语句中,未被显式地限制,并且发生在一个外部选择的 FROM 子句中所指定的表中。 因此,SELECT 语句中对该列的引用被当作外部引用,将产生相关。
假设相关是所期望的,处理该语句。 |
确保相关是所期望的。 最好显式限定期望的外部引用。
sqlcode:+12 sqlstate:01545 |
SQL0013N |
空定界标识无效。 | 在预编译过程中,找到了指定为空字符串的游标名、语句名、数据库名称或者授权标识。 这是无效的。 无法处理该语句。 | 提供有效的游标名、语句名、数据库名称或授权标识。 |
SQL0014N |
源文件名无效。 | 对预编译器的调用中指定的源文件名包含无效的字符,或指向源文件名的指针是无效的。
未创建任何程序包。 |
确保源文件名正确。 |
SQL0015N |
主变量数据类型 标记-1 无效。 而应使用 标记-2。 | 如果 WCHARTYPE CONVERT 预编译选项有效,那么必须用数据类型 ‘wchar_t’ 而不是 ‘sqldbchar’ 来声明图形主机变量。
如果 WCHARTYPE NOCONVERT 预编译选项有效(缺省值),且 ‘wchar_t’ 在此平台上被定义为 4 个字节的整数,那么必须用数据类型 ‘sqldbchar’ 而不是 ‘wchar_t’ 来声明图形主机变量。 |
用在消息中指定的数据类型替换主机变量的当前数据类型。 |
SQL0017N |
必须在 SQL 函数或方法中指定和执行 RETURN 语句。 | SQL 函数或方法不包含 RETURN 语句,或者函数或方法没有以执行 RETURN 语句来结束。 | 确保函数或方法执行了 RETURN 语句。
sqlcode:-17 sqlstate:42632 |
SQL0020W |
已忽略以下列表中的绑定或预编译命令参数或参数值,因为它们不受目标数据库支持:参数名或值。 | 可以通过预编译器来预编译已生成的绑定文件中存储的 SQL 语句,然后使用 BIND 命令在数据库中创建程序包。 可以使用 PRECOMPILE 命令在数据库中处理包含嵌入式 SQL 语句的应用程序源文件以及创建程序包。
在以下情况下,返回此警告:
|
在指定受目标数据库服务器支持的参数和值的情况下,再次执行 BIND 命令或 PRECOMPILE 命令。 |
SQL0021W |
忽略无效的预编译器选项 选项。 | 消息中所指定的选项是无效的预编译器选项。忽略该选项。 | 确保正确指定了所有预编译器选项。 |
SQL0022W |
忽略重复的预编译器选项 选项。 | 预编译器选项 选项 是重复的。
忽略该选项。 |
确保所有的预编译器选项仅指定过一次。 |
SQL0023N |
数据库名称无效。 | 指定的数据库名称是无效的名称。
预编译终止。 |
确保正确拼写数据库名称并且遵循短标识规则。 |
SQL0024N |
未指定数据库名称。 | 未提供进行预编译的数据库名称。
预编译终止。 |
提供数据库名称。 |
SQL0025W |
绑定或预编译完成,且附带警告。 | 绑定或预编译成功,但发出警告。 程序包和/或绑定文件是按照命令中的请求而创建的。 | 请参阅消息文件中的消息。 如果有必要,请更正问题并重新提交命令。 |
SQL0026N |
密码无效。 | 指定的密码是无效的密码。
预编译终止。 |
确保所提供的密码遵循有效密码的规则。 |
SQL0028C |
绑定文件的发行版号无效。 | 绑定文件的发行版号与已安装的数据库管理器版本的发行版号不兼容。
该绑定文件不能配合当前的数据库管理器版本使用。 无法处理该命令。 |
如果可能,通过当前数据库管理器重复预编译进程。 否则,只能使用以兼容的数据库管理器发行版级别创建的绑定文件。 |
SQL0029N |
需要 INTO 子句。 | 嵌入在应用程序中的非游标 SELECT 或 VALUES 语句必须有一个 INTO 子句来指示该语句的结果将要放置在何处。 动态 SELECT 语句不允许 INTO 子句。 | 将 INTO 子句添加至 SELECT 或 VALUES 语句并再次预编译应用程序。
sqlcode:-29 sqlstate:42601 |
SQL0030N |
未指定源文件名。 | 未提供进行预编译的源文件名。
预编译终止。 |
指定源文件名。 |
SQL0031C |
打不开文件 名称。 | 文件 名称 是必需的,但打不开。
预编译终止。 |
确保指定的文件名正确且存在于文件系统中,并且文件许可权正确。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 如果错误仍存在,那么重新安装数据库管理器后再安装样本数据库。 |
SQL0032C |
无法使用文件 名称。 | 当正在读或写文件 名称 时,遇到错误。
预编译终止。 |
再次尝试进行预编译。 |
SQL0033N |
名称 是无效的绑定文件。 | 所指定的绑定文件 名称 不是绑定文件。
绑定终止。 |
确保指定了正确的文件名。 |
SQL0034N |
未指定绑定文件名。 | 未指定进行绑定的绑定文件名。
绑定终止。 |
提供绑定文件名。 |
SQL0035N |
打不开文件 名称。 | 打不开消息文件 名称。
已终止绑定或预编译。 |
确保系统可访问该文件。 |
SQL0036N |
文件名 名称 的语法无效。 | 如果文件输入到预编译器,那么它必须具有所使用语言的正确扩展名。 如果文件输入到绑定程序,那么它必须具有扩展名 .bnd。 完全解析的文件名如果超过了平台最大长度也会导致此错误。
预编译或绑定终止。 |
确保指定的文件名正确。 |
SQL0037W |
消息文件 名称 的语法无效。 | 对此功能而言,消息文件名 名称 在语法上不正确。
系统将输出重定向到标准输出设备。 |
确保指定的文件名正确。 |
SQL0038W |
由于在将 DB2 提供的此列表文件绑定至 DB2/MVS、SQL/DS 或 OS/400 时需要绑定选项 SQLERROR CONTINUE,因此该选项已被激活。 |
当绑定 DB2 提供的下列列表文件时,需要 SQLERROR CONTINUE 绑定选项。
即使在绑定文件中存在有此选项认为无效的 SQL 语句,它也指示 DRDA 服务器创建程序包。 因为不是所有 DRDA 服务器都支持包含在 DB2 提供的绑定文件中的所有 SQL 语句,所以 SQLERROR CONTINUE 绑定选项必须用来保证为列表文件中的所有绑定文件创建程序包。 |
无需进行任何响应。 已为您指定了需要的绑定选项 SQLERROR CONTINUE。 为了避免将来接收到此警告,指定 SQLERROR CONTINUE 绑定选项。 |
SQL0039N |
由于绑定文件无效,绑定程序未完成处理。 | 绑定程序不能处理该绑定文件。 绑定文件有可能由于绑定文件的内容被偶然地改变而无效。
不处理绑定文件。 |
如果可能,重复预编译进程以创建一个新绑定文件。 否则,获得绑定文件的新副本。 |
SQL0040N |
列表 名称 中的一个或多个绑定文件上出错。 未绑定下列文件:列表。 | 由于消息文件中先前的消息中指定的原因,一个或多个绑定文件未绑定。 未绑定文件列表由自 1 开始的数字组成,指示未绑定文件在列表文件中的相对位置。 名称 不包括列表文件的路径规范。
在消息中仅列示前 20 个错误绑定文件。 如果有多于 20 个错误的绑定文件,在列表中最后一个绑定文件名后插入省略号 (…)。 未创建一个或多个程序包。 |
请参阅消息文件中的消息。 检查列表文件以验证它是否包含有效名称。 重新提交该命令。 |
SQL0041N |
没有尝试绑定列表 name 中文件号 number 后面的文件,因为出现了致命错误,处理已终止。 | 在绑定过程中遇到的某些错误被认为是致命的(即,系统错误和内存错误)。 如果在处理列表文件中的文件时发生这些错误中的其中一个,处理就会终止。 不会尝试绑定列表文件中的剩余文件。
当绑定列表中指定的绑定文件时发生这类错误。 注意,用于标识绑定文件的数字指示列表文件中文件的相对位置。 |
请参阅与此消息一起的其他消息来解决发生的错误。 重新提交该命令。 |
SQL0051N |
保留单个程序的所有 SQL 语句所需的空间超出了它允许的最大值。 | 程序中的所有 SQL 语句需要的空间不能装入 SYSIBM.SYSPLAN 中的列 SECT_INFO。
预编译终止。 |
简化程序,或将程序分割成几个较小的独立程序,或者两项都进行。 |
SQL0053W |
程序中未找到任何 SQL 语句。 | 指定的源文件不包含 SQL 语句。
如果正在绑定,那么将创建一个空程序包。 |
确保正在预编译或绑定正确的程序。 |
SQL0055N |
源输入文件为空。 | 程序源输入文件不包含数据。
预编译终止。 |
确保指定了正确的输入文件。 |
SQL0056N |
在嵌套复合语句中存在 SQLSTATE 或 SQLCODE 变量声明。 | 在 SQL 例程中,SQLSTATE 或 SQLCODE 变量声明处于嵌套复合语句中,而不是在最外面的复合语句中。
无法处理该语句。 |
仅在 SQL 例程最外面的复合语句中声明 SQLSTATE 和 SQLCODE 变量。
sqlcode:-56 sqlstate:42630 |
SQL0057N |
SQL 函数或方法中的 RETURN 语句必须包括返回值。 | RETURN 语句是在 SQL 函数或方法中指定的,无须指定要返回的值。
无法处理该语句。 |
在 RETURN 语句上指定一个值。
sqlcode:-57 sqlstate:42631 |
SQL0058N |
SQL 过程中的 RETURN 语句值的数据类型必须是 INTEGER。 | 在 SQL 过程中,以数据类型不是 INTEGER 的值或表达式指定 RETURN 语句。
无法处理该语句。 |
在 RETURN 语句上指定一个具有 INTEGER 数据类型的值。
sqlcode:-58 sqlstate:428F2 |
SQL0060W |
名称 预编译器正在进行中。 | 当预编译器开始处理时,此消息被写入标准输出设备。 标记 名称 指的是调用的特定语言预编译器。
继续处理。 |
不需要执行任何操作。 |
SQL0061W |
绑定程序正在进行中。 | 当绑定程序开始处理时,此消息被写入标准输出设备。
继续处理。 |
不需要执行任何操作。 |
SQL0062W |
启动文件 名称 的 INCLUDE。 | 遇到了一个 INCLUDE 语句。 预编译器现正在处理 INCLUDE 文件。 | 不需要执行任何操作。 |
SQL0063W |
完成了文件 名称 的 INCLUDE。 | 预编译器已完成 INCLUDE 文件的处理。 将继续处理含有 INCLUDE 语句的文件。 | 不需要执行任何操作。 |
SQL0064N |
文件 名称 直接或间接地包含它本身。 | 遇到了一个循环 INCLUDE。 预编译器输入文件不能 INCLUDE 自身,也不能被它所 INCLUDE 的文件 INCLUDE。
未 INCLUDE 指定的文件。 |
检查 INCLUDE 文件的嵌套,并移除任何循环。 |
SQL0065N |
主机变量声明中遇到意外的行结束。 | 主机变量声明存在无效的语法。 在声明完成以前遇到行结束。
无法处理该语句。 |
检查主机变量声明的语法。 |
SQL0078N |
必须为例程 例程名 指定参数名。 | 例程 例程名 未为所有参数指定参数名。 当用 LANGUAGE SQL 或 SQLMACRO 来定义例程时,所定义的每个参数都需要参数名。
无法处理该语句。 |
确保所定义的每个参数都包括参数名。
sqlcode:-78 sqlstate:42629 |
SQL0079N |
声明的全局临时表或索引 名称 的“模式”名必须是 SESSION,而不是 模式名。 | 声明的临时表或声明的全局临时表的索引的模式名 名称 必须是 SESSION。 该语句正在为声明的全局临时表或声明的全局临时表的索引指定模式名 模式名。 这是不允许的。
无法处理该语句。 |
用下列方法之一来更改语句:
sqlcode:-79 sqlstate:428EK |
SQL0081N |
在预编译/绑定过程中返回 SQLCODE sqlcode。 | 在预编译或绑定程序时,从数据库管理器返回一个意外的 SQLCODE sqlcode。
无法处理该语句。 |
检查 SQLCODE 以确定问题并采取适当的措施。 |
SQL0082C |
发生错误,它终止了处理。 | 先前的非 SQL 错误导致了处理终止。
预编译/绑定/重新绑定终止。 未创建任何程序包。 |
更正导致先前错误的情况,并再次尝试执行该操作。 |
SQL0083C |
内存分配出错。 | 在处理期间,没有足够的内存用来继续处理。 |
可能的解决方案包括:
如果在尝试建议的解决方案后仍然接收到此消息,请与 IBM 客户支持机构联系。 |
SQL0084N |
EXECUTE IMMEDIATE 语句包含 SELECT 或 VALUES 语句。 | SELECT 或 VALUES 语句在 EXECUTE IMMEDIATE 语句中使用。
无法处理该语句。 |
不支持隐含的功能。 准备 SELECT 或 VALUES 语句。 然后使用 OPEN、FETCH 和 CLOSE。
sqlcode:-84 sqlstate:42612 |
SQL0085N |
已定义了语句名 名称。 | 先前的 DECLARE 语句已经使用了当前 DECLARE 语句中指定的语句名称。
不处理当前的 DECLARE 语句。 先前的 DECLARE 语句仍使用该语句名。 |
对此语句使用另一个名称。 |
SQL0086C |
内存分配出错。 | 在处理期间,没有足够的内存用来继续处理。 |
可能的解决方案包括:
|
SQL0087N |
在不允许使用空值的上下文中指定了空值。 | 在变量不能为空值的上下文中使用了空值变量。 例如,可以在 OPEN 或 FETCH 语句中使用游标变量,但该游标变量的值不能为空值。 无法处理该语句。 | 请确保该变量的值在不允许使用空值的上下文中不为空,然后再试该请求。
sqlcode:-87 sqlstate:22004 |
SQL0088N |
主机变量 名称 是有歧义的。 | 不能唯一地标识主变量 名称。 存在具有相同限定条件的多个主机变量。
无法处理该语句。 |
进一步限定该主机变量,或者,如果它已被完全限定,那么将它重命名。 |
SQL0089N |
在找到 100 个错误后,结束处理。 | 在找到 100 个错误后,预编译器或绑定程序退出处理。 | 修正消息记录中指示的错误,并且重新提交该命令。 |
SQL0091W |
预编译或绑定结束,具有 数值-1 个错误和 数值-2 个警告。 | 预编译或绑定终止,并有指明数目的警告和错误。
预编译或绑定终止。 |
如果发生了警告或错误,那么更正程序。如果有必要,请再次尝试进行预编译或绑定。 |
SQL0092N |
因为先前的错误,未创建任何程序包。 | 因为先前的错误,未创建任何程序包。 | 更正错误,再次尝试进行预编译或绑定。 |
SQL0093N |
在 EXEC SQL 语句终结符以前遇到输入结束。 | 当处理 SQL 语句时,在语句终止以前遇到源文件结束。
预编译终止。 |
确保 SQL 语句正确地终止。 |
SQL0094N |
由于用户的中断请求,结束了绑定。 | 由于用户可能按下了中断键序列,绑定终止。
处理终止。 未创建程序包。 |
如果需要,重新提交绑定。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 |
SQL0095N |
因为先前的错误,未创建任何绑定文件。 | 因为先前的错误,未创建任何绑定文件。
未创建任何绑定文件。 |
更正错误,并再次尝试进行预编译。 |
SQL0097N |
在 SQL 例程中,不支持数据类型为 LONG VARCHAR 或 LONG VARGRAPHIC 的变量或参数。 | SQL 例程(过程、函数或方法)不支持 LONG VARCHAR 或 LONG VARGRAPHIC 数据类型的变量或参数。 | 在 SQL 例程中,不要使用数据类型为 LONG VARCHAR 或 LONG VARGRAPHIC 的变量或参数。 对于 LONG VARCHAR,使用具有显式长度的 VARCHAR。 对于 LONG VARGRAPHIC,使用具有显式长度的 VARGRAPHIC。
sqlcode:-97 sqlstate:42601 |
SQL0100W |
找不到进行 FETCH、UPDATE 或 DELETE 操作的行; 或者查询的结果是一个空表。 |
下列其中一个条件为真:
未检索、更新或删除数据。 |
不需要执行任何操作。 处理可以继续。
sqlcode:+100 sqlstate:02000 |
SQL0101N |
由于已达到内存限制、SQL 限制或数据库限制之类的限制,因此未处理语句。 | 在尝试准备或执行超出了内存限制、SQL 限制或数据库限制之类的限制的 SQL 语句时,可能会返回此消息。 在此上下文中,“内存限制”包括下列示例:
例如,可能会由于下列原因而返回此消息:
在尝试执行由于过于复杂而无法编译的 SQL 语句时,也可能会返回此消息。 例如,下列元素会导致语句的复杂性提高:
|
通过执行下列一项或多项操作,对此错误作出响应:
sqlcode:-101 sqlstate:54001 |
SQL0102N |
以 字符串 开始的字符串常量太长。 | 发生了下列情况之一:
可能是数据转换正在进行,而结果字符串太长。 对于运行于不同代码页下的应用程序和数据库之间的连接,字符串常量从应用程序代码页转换为数据库代码页。 在某些情况下,图形字符串常量可能被进一步从数据库代码页转换为 UCS-2(UNICODE)编码,例如当用 EUC 代码页创建了数据库时。 这意味着结果字符串有可能长于输入字符串。 无法处理该语句。 |
对于“表注释”或“列注释”,减小注释的大小。 对于 SQL CONNECT 语句,减小应用程序服务器名的长度。 对于其他字符串常量,请求的功能不是交互可用的。 对于在应用程序中嵌入的非 CONNECT SQL 语句上下文中发生的错误,将长串赋给主机变量,然后用该变量替代 SQL 语句中的字符串文字。
联合系统用户:对于传递会话,请确定导致该错误的数据源。 检查该数据源的 SQL 方言,以确定超出了哪个特定限制,并根据需要调整失败的语句。 Ingest 实用程序用户:指定少于 129 字节的 ingest 作业标识,或者指定不超过最大长度的格式字符串。 sqlcode:-102 sqlstate:54002 |
SQL0103N |
数字文字 文字 无效。 | 所指示的 文字 以一个数字开始,但它是无效的整数、小数或浮点文字。
联合系统用户:在传递会话中发生了特定于数据源的文字表示错误。 无法处理该语句。 |
请更正无效的数字文字。联合系统用户:如果在传递会话中出错,请确定导致该错误的数据源。 检查该数据源的 SQL 方言,以确定违反了哪一条文字表示法规则,并根据需要调整失败的语句。
sqlcode:-103 sqlstate:42604 |
SQL0104N |
在 text 之后发现一个意外的标记 token 。 预期标记可能包括:标记列表。 | 在文本 文本 后面的指定标记处检测到 SQL 语句中或 SYSPROC.ADMIN_CMD 过程的输入命令字符串中的语法错误。 文本 字段指示无效标记前面的 SQL 语句中或 SYSPROC.ADMIN_CMD 过程的输入命令字符串的 20 个字符。
作为帮助,在 SQLCA 的 SQLERRM 字段中,提供了有效标记的部分列表作为 标记列表。 此列表假定语句直到该位置为止均正确。 以命令方式将文本传递至命令行处理器 (CLP),并且此文本包含的由操作系统 shell 解释的特殊字符(例如,单引号或双引号)未使用转义字符标识时,可能会返回此消息。 如果某个 SYSIBM 内置函数不支持显式将 SYSIBM 用作函数限定符,那么对该内置函数进行显式限定引用时,也可能返回此错误。 无法处理该语句。 |
通过下列其中一种方式对此错误作出响应:
sqlcode:-104 sqlstate:42601 |
SQL0105N |
以 字符串 开始的字符串常量无效。 | 语句包含一个以无效 字符串 开始的字符串常量。
无法处理该语句。 |
指定字符串常量的正确格式。 检查图形字符串、成对的定界符以及该字符串中字节数是否为偶数。
sqlcode:-105 sqlstate:42604 |
SQL0106N |
SQL 语句正确开始,但不完整。 | 在再也找不到输入之前,SQL 语句正确。 这可能是因无法正确结束文字导致的。 字符串文字需要结束引号。
此 SQL 语句的处理已结束。 |
检查该语句是否带有所有必需的部分来完成期望的功能,且是否所有子句都完整。
对于 PL/I:检查分号前面的 SQL 语句是否完整。 对于汇编程序:检查是否正确遵循了延续规则。 (列 72 中必须要有非空白字符,延续的行必须在列 16 或之后开始。) 对于 COBOL:检查 END-EXEC 前面的 SQL 语句是否完整。 sqlcode:-106 sqlstate:42601, 42603 |
SQL0107N |
名称 名称 太长。 最大长度为 长度。 | 返回的名称 名称 太长。 长度 指示了该类型的名称所允许的最大长度(以字节计)。 这不包括任何转义字符(如果存在)。
联合系统用户:如果是在传递会话中,那么可能已超出特定于数据源的限制。 无法处理该语句。 注意:在对运行于不同代码页下的应用程序和数据库执行字符数据转换时,会返回此错误,这是因为转换的结果超出长度限制。 |
请选择更短的名称或更正对象名的拼写。
联合系统用户:对于传递会话,请确定导致该错误的数据源。 检查该数据源的 SQL 方言,以确定超出了哪个特定限制,并根据需要调整失败的语句。 sqlcode:-107 sqlstate:42622, 10901 |
SQL0108N |
名称 名称 的限定符数是错误的。 | 名称 名称 限定不正确。
在此上下文中,具有给定名称 名称 的对象只能有一个限定符。 一个列名被一个限定的或非限定的表名或者一个相关名所限定。 在某些上下文中,一个列名需要一个表名限定符。 ALTER MODULE 语句操作的模块对象的标识必须是未限定的单一部件名称。 无法处理该语句。 |
确保对象名称正确地限定。
sqlcode:-108 sqlstate:42601 |
SQL0109N |
由于在不支持以下子句的上下文中使用此子句,因此未处理语句或命令:子句。 | 当 SQL 语句或命令以不受支持的方式使用子句时,将返回此消息。
在许多不同的场景中,都有可能返回此消息。 以下是有可能返回此消息的一些场景示例:
|
请从该语句或命令中移除该子句,然后重新提交该语句或重新运行该命令。
sqlcode:-109 sqlstate:42601 |
SQL0110N |
字符串 是无效的十六进制常数。 |
十六进制常数 字符串 无效。 问题为以下之一:
|
更正该常量,并重新提交该语句。
sqlcode:-110 sqlstate:42606 |
SQL0111N |
列函数 名称 不包括列名。 | 未正确指定列函数 名称 (AVG、MIN、MAX、SUM 或 COUNT(DISTINCT)) 的规范,因为这些函数在操作数中必须包括一个列名。
无法处理该语句。 |
指定作为列函数操作数的表达式中的列名。
注意:此错误仅适用于版本 2 之前的 DB2 发行版。 sqlcode:-111 sqlstate:42901 |
SQL0112N |
列函数 名称 的操作数包括列函数、标量全查询或子查询。 |
列函数的操作数不能包括:
在 SELECT 列表中,算术运算符的操作数不能是包含 DISTINCT 关键字的列函数。 无法处理该语句。 |
更正列函数的使用以移除无效表达式,然后再次尝试。
sqlcode:-112 sqlstate:42607 |
SQL0113N |
标识 中包含不允许的字符或不包含任何字符。 | SQL 变量名、参数名、安全标号组件元素或条件名 标识 包含无效字符。
SQL 变量名、参数名和条件名中只允许包含对 SQL 普通标识有效的字符。 注意,因为标识是定界的,所以不执行折叠,并且大写和小写字母被认为是相互有别的。 安全标号组件元素中只允许包含对元素值有效的字符。 |
更正标识,并重新提交该语句。
sqlcode:-113 sqlstate:42601 |
SQL0117N |
赋值数目与指定的或隐含的列数或变量数不一样。 | 在下列情况下,值的数目可能会不同:
无法处理该语句。 |
请更正该语句以便为每一个指定的或隐含的列或变量指定值。
sqlcode:-117 sqlstate:42802 |
SQL0118N |
作为 INSERT、DELETE 或 UPDATE 语句的目标的表或视图,在 FROM 子句中也被指定了。 | 指定为 INSERT、DELETE 或 UPDATE 语句的目标的表或视图在同一条语句中的子查询的 FROM 子句中也出现。
作为 INSERT、UPDATE 或 DELETE 目标的表或视图不能也被用来提供要插入的值,或用来限定将要插入、更新或删除的行。 无法处理该语句。 此消息仅适用于 1.2 和更早版本的服务器,以及通过 DB2 Connect 访问的主机。 |
不支持隐含的功能。 要尝试得到希望的结果,创建对象表或视图的临时副本并且将子查询传递给该副本。
sqlcode:-118 sqlstate:42902 |
SQL0119N |
在 SELECT 子句、HAVING 子句 或 ORDER BY 子句中指定的以 表达式开头 开始的表达式未在 GROUP BY 子句中指定,或者它在 SELECT 子句、HAVING 子句或 ORDER BY 子句中,具有列函数,但未指定 GROUP BY 子句。 |
SELECT 语句有下列其中一种错误:
标识的表达式是以 表达式开头 开始的表达式。 表达式可以是单个列名。 如果在 HAVING 子句中指定了 NODENUMBER 或 PARTITION 函数,那么认为基础表的所有分区键列都处在 HAVING 子句中。 无法处理该语句。 |
通过将表达式包括在 SELECT 子句、HAVING 子句或 ORDER BY 子句中的 GROUP BY 子句中,或通过从 SELECT 语句移除列函数来更正该语句。
sqlcode:-119 sqlstate:42803 |
SQL0120N |
无效使用了聚集函数或 OLAP 函数。 | 只能在全查询的选择列表、having 子句或者在具有一定限制条件的 WHERE 子句或 GROUP BY 子句中使用聚集函数或 OLAP 函数。
仅当一个 WHERE 子句出现在 HAVING 子句的子查询中,并且聚集函数或 OLAP 函数的自变量是对一个组的相关引用时,此 WHERE 子句才能包含聚集函数或 OLAP 函数。 仅当聚集函数或 OLAP 函数的自变量是对子查询(不同于包含 GROUP BY 子句的子查询)中列的相关引用时,GROUP BY 子句才可包含聚集函数或 OLAP 函数。 不能在 XMLQUERY 或 XMLEXISTS 表达式的自变量列表中使用 OLAP 函数。 无法处理该语句。 |
更改语句以便不使用聚集函数或 OLAP 函数或仅在受支持的地方使用聚集函数或 OLAP 函数。
sqlcode:-120 sqlstate:42903 |
SQL0121N |
在同一条 SQL 语句中多次为赋值指定了目标名称 名称。 | 同一个目标名称 名称 被指定了多次:作为 CALL 语句的 OUT 或 INOUT 自变量、在 INSERT 语句的列的列表中、在 UPDATE 语句的 SET 子句中的赋值符号的左边或者在赋值语句的左边。 目标名称标识列、SQL 参数或变量。
注意,更新或插入视图(其中视图的多个列都基于基本表的同一列)时,可能会发生此错误。 无法处理该语句。 |
更正该语句的语法,使每个列名仅被指定一次。
sqlcode:-121 sqlstate:42701 |
SQL0122N |
SELECT 语句中没有 GROUP BY 子句但在 SELECT 子句中包含有列名或表达式和列函数,或是列名或表达式包含在 SELECT 子句中,但不在 GROUP BY 子句中。 | SELECT 语句有下列其中一种错误:
该列或表达式可能包含在标量函数中。 如果在 SELECT 子句中指定了 DATAPARTITIONNUM、DBPARTITIONNUM、NODENUMBER、HASHEDVALUE 或 PARTITION 函数,那么基础表的所有数据库或表分区键列都被视为在 SELECT 子句中。 无法处理该语句。 |
通过将 SELECT 子句中的列或表达式包含在 GROUP BY 子句中,或者从 SELECT 子句中移除这些列或表达式来更正该语句。
sqlcode:-122 sqlstate:42803 |
SQL0123N |
函数 n 中 name 位置的参数必须是常量、关键字、变量或常量或变量的转置。 | 函数 名称 中位置 n 处的参数不是期望的元素;该参数必须是下列其中一个元素:
|
确保函数的每个自变量都符合相应参数的定义。
sqlcode:-123 sqlstate:428I9 和 42601 |
SQL0125N |
ORDER BY 或 GROUP BY 子句中的列号码小于 1,或者大于结果表中的列数。 | 语句中的 ORDER BY 或 GROUP BY 子句包含的列号小于 1 或大于结果表中的列数(SELECT 子句中的项数)。
无法处理该语句。 |
更正 ORDER BY 或 GROUP BY 子句的语法,使每个列标识正确地标识结果表中的列。
sqlcode:-125 sqlstate:42805 |
SQL0127N |
多次指定 DISTINCT。 |
不能使用 DISTINCT 限定词:
无法处理该语句。 |
此错误仅适用于版本 2 之前的 DB2 发行版,以及通过 DB2 Connect 访问的主机。
sqlcode:-127 sqlstate:42905 |
SQL0129N |
语句包含太多表名。 | SQL 语句包含太多表名。 单条 SQL 语句最多可以引用 255 个表。 此限制包括所引用的任何视图中的每个表。
无法处理该语句。 |
将 SQL 语句分为两个或多个带有 255 个或更少表引用的简单语句。
此消息适用于通过 DB2 Connect 访问的主机。 sqlcode:-129 sqlstate:54004 |
SQL0130N |
ESCAPE 子句不是单个字符,或者模式字符串中转义字符的出现是无效的。 | 转义字符必须是单个字符,长度不超过 2 字节。 仅当它之后跟随其自身、百分号或下划线时,它才能出现在模式字符串中。 有关 LIKE 谓词上 ESCAPE 子句的更多信息,请参阅 SQL Reference。 | 相应地更正模式字符串或者转义字符。
sqlcode:-130 sqlstate:22019, 22025 |
SQL0131N |
LIKE 谓词的操作数有不兼容的数据类型。 | 如果 LIKE 或 NOT LIKE 左边的表达式是字符类型,那么右边的表达式必须是字符类型。
如果左边的表达式是图形类型,那么右边的表达式必须是图形类型。 如果左边的表达式是二进制字符串类型,那么右边的表达式必须是二进制字符串类型。 无法处理该语句。 |
将 LIKE 谓词的表达式更正为相同的数据类型。
sqlcode:-131 sqlstate:42818 |
SQL0132N |
未处理语句,因为在 LIKE 谓词或标量函数需要字符串表达式的情况下对其指定了值。 | 对函数(例如,下列其中一个函数)指定了无效字符串表达式,会返回此消息:
|
在对每个函数指定有效操作数的情况下,再次发出语句。
sqlcode:-132 sqlstate:42824 |
SQL0134N |
不正确地使用字符串列、主机变量、常量或函数 名称。 | 不允许使用字符串 名称。
下列各项中不允许生成 CLOB、DBCLOB、BLOB、LONG VARCHAR 或 LONG VARGRAPHIC 数据类型的表达式:
联合系统用户:在传递会话中,特定于数据源的限制可能会导致此错误。 请参阅 SQL Reference 文档,找到失败的数据源。 无法处理该语句。 |
不支持所请求的对字符串的操作。
sqlcode:-134 sqlstate:42907 |
SQL0135N |
INSERT 语句或 UPDATE 语句中长串列的输入必须来自主机变量,或是关键字 NULL。 | UPDATE 或 INSERT 正在使用常量、列名或子查询(但本来应该使用 NULL 或主机变量)。
长串列是 LONG VARCHAR、LONG VARGRAPHIC 或 VARCHAR(n),其中 n 大于 254 但小于或等于 32767,或是 VARGRAPHIC(n),其中 n 大于 127,但小于或等于 16383。 |
请参阅 DB2 for VM Application Programming 手册以了解有关使用长串的信息。 更正该语句。 再次尝试。
sqlcode:-135 sqlstate:56033 |
SQL0137N |
操作 中所得到的长度大于 最大值。 | 此操作生成的结果字符串的实际长度超过此操作的最大允许长度。
如果此操作为 CONCAT,那么并置给定操作数的结果比结果类型支持的长度长。 字符串结果限制在 32,700 字节以内(除非操作数之一是 CLOB,其限制为 2 千兆字节)。 图形字符串结果限制在 16350 个字符以内,除非操作数之一是 DBCLOB,这种情况下的限制为 1,073,741,823(少于 1 千兆字节)个双字节字符。 二进制字符串结果(操作数是 BLOB)限制为 2 千兆字节。 |
请参阅此操作的文档以确定结果字符串的生成方式以及操作的最大长度的确定方式。 考虑更改此操作的自变量是更改结果的长度还是最大长度。
如果此操作为 CONCAT,请确保这些操作数的长度之和未超过受支持最大长度并重试此操作。 sqlcode:-137 sqlstate:22001, 54006 |
SQL0138N |
未执行此语句,因为标量函数的数字自变量超出范围。 | 如果对用于处理一个或多个字符串的标量函数指定了超出范围的数字自变量,那么会返回此消息。 这类函数的示例包括:
例如,SUBSTR 函数的第二个自变量指定字符串中的位置。 如果对该自变量指定的值小于 1 或大于字符串长度,那么会返回此消息。 有关特定函数的自变量的有效范围的信息,请参阅该函数的描述。 |
查看该语句中每个标量函数的数字自变量。 更正超出范围的所有值,然后重新发出该语句。
sqlcode:-138 sqlstate:22011 |
SQL0139W |
列 列 的规范中出现冗余子句。 | 列规范中的子句是冗余的。
语句处理成功,但是忽略了冗余的子句。 |
更正列规范。
sqlcode:+139 sqlstate:01589 |
SQL0142N |
不支持 SQL 语句。 | 在其他 SQL 方言中有效的过程化 SQL 语句不受此数据服务器支持,或者对其他 IBM 关系数据库有效的 SQL 语句不受此数据服务器支持。
联合系统用户:检查是否已将 SQL 语句定向至不支持该 SQL 语句的数据源。 无法处理该语句。 |
更改该 SQL 语句的语法,或从程序中移除该语句。
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的 SQL 方言。 |
SQL0143W |
不支持 SQL 语句; 忽略无效的语法。 | 对于其他 IBM 关系数据库产品可能有效的嵌入式 SQL 语句,可被数据库管理器了解,但却不受支持。
该语句可能产生了不一致或不需要的结果。 |
更改该 SQL 语句的语法,或从程序中移除该语句。 |
SQL0150N |
INSERT、DELETE、UPDATE、MERGE 或 TRUNCATE 语句中的目标全查询、视图、类型表、具体化查询表、范围集群表或者登台表是不允许对其执行所请求的操作的目标。 | 已定义 INSERT、UPDATE、DELETE、MERGE 或 TRUNCATE 语句中所指定的全查询、视图、类型表、具体化查询表、范围集群表或登台表,因此不能执行所请求的插入、更新、删除或截断操作。
如果视图或全查询的 SELECT 语句包含下列任一项,那么视图或全查询为只读的:
注意,这些条件不适用于 SELECT 语句或全查询的子查询。 直接或间接包含引用子查询或使用 NOT DETERMISTIC 或 EXTERNAL ACTION 定义的例程的 WHERE 子句的视图不能用作 MERGE 语句的目标。 使用 WITH ROW MOVEMENT 子句定义的视图不能用作包含更新操作的 MERGE 语句的目标。 通过使用 UNION ALL 的全查询定义的视图不能用作指定修改操作中的 period 子句的 MERGE 语句的目标。 无法直接将行插入到对不可实例化的结构化类型定义的类型表中。 此表的子表可能允许插入。 通常,系统维护的具体化查询表和登台表不允许插入、更新、删除或截断操作。 不能在截断操作中使用范围集群表。 无法处理该语句。 |
不能对全查询、视图、系统维护的具体化查询表、范围集群表或登台表执行所请求的功能。
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查数据源的对象定义和更新限制。 sqlcode:-150 sqlstate:42807 |
SQL0151N |
不能更新列 名称。 | 指定的列不能更新,因为尝试了下列其中一项:
联合系统用户应检查是否有其他某个特定于数据源的限制阻止更新该列。 无法处理该语句。 |
如果指定的列是从标量函数、表达式、关键字或不可更新的列中派生出来的,那么省略更新的设置子句中的列或者插入的列。 要获取可更新目录(和可更新列)的列表,请参阅 SQL Reference。
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查数据源的对象定义和更新限制。 sqlcode:-151 sqlstate:42808 |
SQL0152N |
约束 约束名 是 实际约束类型 约束而不是 期望约束类型 约束。 | 尝试改变或删除约束 约束名,但是它定义为 期望约束类型 约束,而不是指定的 实际约束类型 约束。 | 验证要改变或删除的约束的名称和类型。
sqlcode:-152 sqlstate:42809 |
SQL0153N |
语句不包括必需的列表。 |
当发生下列情况时,必须在 CREATE VIEW 语句、公共表表达式或在包含作为子查询子句的 CREATE TABLE 语句中指定列列表:
无法处理该语句。 |
在 CREATE VIEW 语句、公共表表达式和 CREATE TABLE 语句中提供列名称列表,或使用 AS 子句在全查询的 SELECT 列表中命名列。
sqlcode:-153 sqlstate:42908 |
SQL0155N |
不能修改触发器转换表。 | 触发器包括带有标识的 OLD_TABLE 或 NEW_TABLE 的 REFERENCING 子句。 DELETE、INSERT 或 UPDATE 触发的 SQL 语句使用了指定为 OLD_TABLE 或 NEW_TABLE 的名称作为要修改的表。 | 从触发操作中移除 DELETE、INSERT 或 UPDATE 触发 SQL 语句,或者更改转换表的名称,以便使该名称不与您正尝试修改的表冲突。
sqlcode:-155 sqlstate:42807 |
SQL0156N |
此操作所使用的名称不是表。 | ALTER TABLE、DROP TABLE、SET INTEGRITY、CREATE TRIGGER、CREATE INDEX、LOCK TABLE 和 RENAME TABLE 这些 SQL 语句只适用于表,而不适用于视图。 RUNSTATS、LOAD 和 REDISTRIBUTE DATABASE PARTITION GROUP 实用程序也只适用于表,而不适用于视图。
联合系统用户:在联合环境中,不支持某些实用程序和语句。 请参阅《管理指南》以了解更多信息。 无法处理该语句或实用程序。 |
验证在语句中指定了正确的表名称。 如果提供了别名,那么确保可将该别名解析为一个表。
联合系统用户:验证该对象是否不是昵称。 sqlcode:-156 sqlstate:42809 |
SQL0157N |
在 FOREIGN KEY 子句中不允许 名称,因为它不标识基本表。 | 在 CREATE 或 ALTER TABLE 语句的 FOREIGN KEY 子句中标识了对象 名称。 FOREIGN KEY 子句必须标识基本表。
无法处理该语句。 未创建或改变指定的表。 |
更正语句以在 FOREIGN KEY 子句中指定基本表名。
如果提供了别名,那么确保该别名可解析为一个基本表。 sqlcode:-157 sqlstate:42810 |
SQL0158N |
为 名称 指定的列数与结果表中的列数不相同。 |
标识 名称 可标识:
指定的列名数必须等于相关联的全查询的结果表中的列数。 如果 名称 是登台表并且相关的具体化查询表有 group by 子句,指定的列名数目必须比为其定义登台表的具体化查询表中的列数目多 2。 如果相关的具体化查询表没有 group by 子句,指定的列名称数目必须比具体化查询表中的列数目多 3。 无法处理该语句。 |
更正语法,以使对 名称 定义的列名列表为结果表中的每一列指定一个名称。
sqlcode:-158 sqlstate:42811 |
SQL0159N |
语句引用了标识非预期对象类型的对象。 对象:对象。 对象类型:对象类型。 期望的对象类型:期望的对象类型。 | 作为语句或命令的一部分指定的对象 对象 指的是类型为 对象类型 的对象,而不是期望的类型为 期望的对象类型 的对象。
在语句或命令中指定的对象类型必须与由 期望的对象类型 标识的类型相匹配。 例如:
|
更改该语句或命令,使之指定期望的对象类型的对象。
sqlcode:-159 sqlstate:42809 |
SQL0160N |
WITH CHECK OPTION 子句对指定的视图无效。 | 如果下列各项为真,那么 WITH CHECK OPTION 子句不能在视图定义中使用:
联合系统用户:在引用可更新昵称的视图上不支持 WITH CHECK 选项。 无法处理该语句。 未创建指定的视图。 |
移除 WITH CHECK OPTION 子句,或更改视图定义,以使其符合此消息中列示的规则。
sqlcode:-160 sqlstate:42813 |
SQL0161N |
插入或更新操作的结果行不符合视图定义。 | 在作为插入或更新操作的对象的视图定义中指定了 WITH CHECK OPTION 子句,或者 FROM 子句指定了将视图作为目标的插入或更新操作。 因此,检查在该视图中插入或更新行的所有尝试,以确保其结果符合视图定义。
如果 FROM 子句中包含以视图作为目标的插入或更新操作,那么始终将当作视图已经定义了 WITH CHECK OPTION 一样来处理插入或更新操作。 无法处理该语句。 未执行任何插入或更新,且视图及其基本表的内容保持不变。 |
检查视图定义,确定请求的插入或更新操作被拒绝的原因。 注意:这可能是一个与数据有关的条件。
所请求的插入或更新操作可能正在尝试将超出范围的值放入目标列中。 联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查数据源的对象定义和视图定义。 sqlcode:-161 sqlstate:44000 |
SQL0170N |
函数 名称 的自变量数不正确。 | 指定的标量函数 名称 带有太少或太多的自变量。
无法处理该语句。 |
确保对标量函数指定了正确数目的自变量。
sqlcode:-170 sqlstate:42605 |
SQL0171N |
由于例程 routine-name 的位置 n 中参数的数据类型、长度或值不正确,因此未处理该语句。 参数名:参数名。 | 有两种情况可能会返回此消息:
如果位置不适用或未知,那么将返回 n 的值 0。 如果参数名称不适用或未知,那么将返回 parameter-name 的空字符串。 |
通过查看例程参数的规则来确定标记中的参数 参数名 的错误之处:
再次调用该例程并指定有效参数。 sqlcode:-171 sqlstate:5UA0J、5UA05、5UA06、5UA07、5UA08、5UA09、2201G、2201T、2201V、10608、22003、22014、22016、22546 和 42815 |
SQL0172N |
名称 是无效的函数名。 | SQL 语句包括了一个未知的标量函数。
无法处理该语句。 |
确保函数名称的拼写正确。
sqlcode:-172 sqlstate:42601 |
SQL0176N |
TRANSLATE 标量函数的第二个、第三个或第四个自变量不正确。 |
该语句由于下面一个或多个原因而不正确:
无法处理该语句。 |
确保转换标量函数的第二个、第三个和第四个自变量有正确的值。
sqlcode:-176 sqlstate:42815 |
SQL0180N |
日期时间值的字符串表示法的语法不正确。 | 日期、时间或时间戳记值的字符串表示法不符合指定的或隐含的数据类型语法。
无法处理该语句。 |
确保日期、时间或时间戳记值的语法符合其数据类型语法。 如果不打算将该字符串用作日期、时间或时间戳记值,那么确保在使用该字符串时,它并未暗指该数据类型。
联合系统用户:该问题可能是由数据源上的日期/时间表示问题所引起的。 如果原因未知,请找出使请求失败的数据源中的问题,并检查该数据源的日期/时间表示限制。 sqlcode:-180 sqlstate:22007 |
SQL0181N |
日期时间值的字符串表示法超出范围。 | 日期、时间或时间戳记值的字符串表示法包含超出范围的值。
此错误可能由从使用其日期时间格式与创建它的应用程序使用的日期时间格式不同的地域代码的应用程序访问日期时间值导致的。 例如,当读取字符串日期时间值的应用程序期望该值的格式为 mm/dd/yyyy 时,以格式 dd/mm/yyyy 存储的字符串日期时间值将是无效的。 日期、时间或时间戳记值的正确范围如下所示:
联合系统用户:该问题可能是由数据源上的日期/时间表示问题所引起的。 请参阅该数据源的文档,以获取该数据源的日期和时间值范围。 如果原因未知,请找出使请求失败的数据源中的问题,并检查该数据源的日期/时间表示限制。 无法处理该语句。 |
确保值在有效范围中,且应用程序与字符串值的日期时间格式相同。
sqlcode:-181 sqlstate:22007 |
SQL0182N |
带有日期时间值或作了标记的持续时间的表达式无效。 | 指定的表达式包含未正确使用的日期、时间或时间戳记值或作了标记的持续时间。
无法处理该语句。 |
检查 SQL 语句,确定问题的原因并更正该语句。
sqlcode:-182 sqlstate:42816 |
SQL0183N |
日期时间算术运算或日期时间标量函数的结果不在有效的日期范围内。 | 算术运算的结果为范围 0001-01-01 到 9999-12-31 之外的日期或时间戳记持续时间。
无法执行该语句。 |
检查 SQL 语句以确定问题的原因。 如果问题与数据有关,那么检查当错误发生时所处理的数据。
sqlcode:-183 sqlstate:22008 |
SQL0187N |
对当前日期/时间专用寄存器的引用无效。 | 当检索日期/时间信息时,检测到操作系统指示的错误。 | 确保系统 TOD 时钟及时区设置正确。
sqlcode:-187 sqlstate:22506 |
SQL0190N |
ALTER TABLE 表名 为列 列名 指定的属性与现有列不兼容。 | 在 ALTER COLUMN 子句中对 ALTER TABLE 语句中表 表名 的列 列名 指定的属性与现有列的属性不兼容。 由于下列原因之一而返回了错误。
无法处理该语句。 |
使指定的属性与现有列相兼容,移除属性规范,或者指定另一个列名。 如果指定了 SET DATA TYPE 子句,请检查通知日志,以找出可能发生了条目列示冲突的行,这些行可能已经不允许执行 ALTER COLUMN。 如果对已经具有用户指定的缺省值的列指定了 ALTER COLUMN,那么必须在发出 ALTER TABLE 语句删除此缺省值之后,才能更改列定义。
sqlcode:-190 sqlstate:42837 |
SQL0191N |
因为分段 MBCS 字符而出错。 | 原因可能是:
联合系统用户:数据源也可能会检测到此情况。 |
联合系统用户:如果数据正确,那么找出导致请求失败的数据源中的问题,并检查该数据源的 DBCS 限制。 如果数据看起来正确,请与 IBM 服务中心联系以获取辅助。 sqlcode:-191 sqlstate:22504 |
SQL0193N |
在 ALTER TABLE 语句中,已将列 列名 指定为 NOT NULL,而 DEFAULT 子句或者未指定,或者被指定为 DEFAULT NULL。 | 当对已存在的表添加新列时,必须为所有现有的行给此新列赋值。 缺省情况下,指定空值。 但是,因为该列定义为 NOT NULL,所以必须定义除空之外的缺省值。 | 移除对列的 NOT NULL 限制或为列提供除空之外的缺省值。
sqlcode:-193 sqlstate:42601 |
SQL0195N |
不能删除 表名 的最后一列。 | 尝试使用 ALTER TABLE 语句来删除一列或多列。 不能从表 表名 中删除列,因为改变表时必须至少保留现有的其中一列。 | 一旦完成了 ALTER 语句,确保表 表名 中至少有一列。 移除其中一列的 DROP 并再次尝试发出该请求;或者,如果应该移除所有列,那么删除然后再次创建该表。
sqlcode:-195 sqlstate:42814 |
SQL0196N |
无法删除 table-name 中的 column-name 列。 原因码:原因码。 | 尝试删除列 列名。 请参阅原因码以获取有关无法删除该列的说明。
|
sqlcode:-196 sqlstate:42817 |
SQL0197N |
限定的列名在 ORDER BY 子句中是不允许的。 | 包括集合运算符(UNION、EXCEPT、INTERSECT)的全查询的 ORDER BY 子句不能有限定的列名。 | 确保 ORDER BY 子句中所有的列名为非限定的。
sqlcode:-197 sqlstate:42877 |
SQL0198N |
PREPARE 或 EXECUTE IMMEDIATE 语句的语句字符串为空白或空。 | 作为 PREPARE 或 EXECUTE IMMEDIATE 语句的对象的主机变量包含的全为空白,或为空字符串。
无法完成 PREPARE 或 EXECUTE IMMEDIATE。 |
更正程序的逻辑以确保在 PREPARE 或 EXECUTE IMMEDIATE 语句执行以前,在它的操作数中提供了有效的 SQL 语句。
sqlcode:-198 sqlstate:42617 |
SQL0199N |
在 text 之后使用保留字 keyword 无效。 预期标记可能包括:标记列表。 | 当保留字 关键字 出现在 文本 之后时,在语句中该点上检测到 SQL 语句中的语法错误。 文本 字段指示该保留字前面的 SQL 语句的 20 个字符。 语句中的子句的顺序可能是错误的。
作为对程序员的帮助,在 SQLCA 的 SQLERRM 字段中,提供了有效标记的部分列表作为 标记列表。 此列表假定语句直到该位置为止均正确。 无法处理该语句。 |
检查在关键字区域内的语句。 如果丢失,添加一个冒号或 SQL 定界符。 验证这些子句是否顺序正确。 如果消息中标识的保留字列示为保留字,那么使该字成为定界标识。
注意:此错误仅适用于版本 2 之前的 DB2 发行版。 sqlcode:-199 sqlstate:42601 |
SQL0203N |
对列 名称 的引用是有歧义的。 |
在语句中使用了列 名称,并且该语句可能可引用多个列。 这可能是如下操作的结果:
该列名需要进一步的信息来建立它是可能的表列中的哪个列。 无法处理该语句。 |
对列名添加一个限定符。 限定符是表名或相关名。 可能需要在选择列表中重命名列。
sqlcode:-203 sqlstate:42702 |
SQL0204N |
名称 是一个未定义的名称。 | 此错误由以下之一引起:
可为任何类型的数据库对象生成此返回码。 联合系统用户:在数据库中未定义由 名称 标识的对象,或者 名称 不是 DROP NICKNAME 语句中的昵称。 某些数据源未向 名称 提供适当的值。 在这些情况下,消息标记将具有以下格式:“OBJECT:<data source> TABLE/VIEW”,指示指定数据源的实际值未知。 无法处理该语句。 |
确保在 SQL 语句中正确指定了对象名(包括任何必需的限定符),并且它存在。 如果该名称表示一个数据分区,那么查询目录表 SYSCAT.DATAPARTITIONS 以找到一个表的所有数据分区。 对于 SOURCE 子句中缺少的数据类型或函数,可能是该对象不存在,或该对象处于某模式中,但该模式不在您的路径中。
对于 CREATE 或 ALTER SECURITY LABEL COMPONENT 语句,应确保安全标号组件中存在指定为用于定位新元素值所在位置的引用元素值的每个元素。 对于 CREATE SECURITY LABEL COMPONENT 语句而言,确保先将每个元素指定为 ROOT 或者 UNDER 子句中的子代,然后再在 UNDER 子句中将其指定为父代元素。 对于标量函数 SECLABEL、SECLABEL_TO_CHAR 或 SECLABEL_BY_NAME 而言,确保对自变量“安全策略名”指定了有效的安全策略。 联合系统用户:如果该语句是 DROP NICKNAME,那么确保该对象实际上是一个昵称。 该对象可能不存在于联合数据库中或数据源上。 验证任何联合数据库对象和任何数据源对象的存在情况。 sqlcode:-204 sqlstate:42704 |
SQL0205N |
object-name 中未定义列、属性或句号 name 。 | 如果 对象名 是表或视图,那么 名称 是未在 对象名 中定义的列或时间段。 如果 对象名 是结构化类型,那么 名称 是未在 对象名 中定义的属性。
联合系统用户:对象名 可以是指昵称。 无法处理该语句。 |
如果 对象名 是表或视图,那么验证是否在 SQL 语句中正确指定了列名、时间段名称、表名或视图名(包括任何必需的限定符)。 如果 对象名 是结构化类型,那么验证是否在 SQL 语句中正确指定了属性名和类型名(包括任何必需的限定符)。
此外,如果在 REORG 或 IMPORT 期间接收到此错误,那么索引中的列名可能违反了在 SQL Reference 中定义的数据库管理器命名规则。 sqlcode:-205 sqlstate:42703 |
SQL0206N |
名称 在使用它的上下文中无效。 | 此错误在下列情况中可能发生:
无法处理该语句。 |
验证是否在 SQL 语句中正确指定了名称。 对于 SELECT 语句,确保在 FROM 子句中命名了所有必需的表。 对于 ORDER BY 子句中的子查询,确保无相关列引用。 如果对表使用相关名,那么验证后续引用使用的是相关名,而不是表名。
对于 CREATE TRIGGER 语句,确保在 SET 转换变量语句赋值符号左边仅指定了新的转换变量,并且对主题表列的任何引用都有指定的相关名称。 对于独立的复合 SQL 语句、CREATE FUNCTION、CREATE PROCEDURE 或 CREATE TRIGGER 语句,验证那些列或变量在当前复合 SQL 语句的作用域内是否可用。 对于使用 db2-fn:sqlquery 函数嵌入在 XQuery 中的全查询,该全查询中的引用必须是下列其中一项:该全查询上下文中的列、全局变量或使用 db2-fn:sqlquery 函数的其他自变量传递给新的 SQL 上下文的参数。 sqlcode:-206 sqlstate:42703 |
SQL0207N |
列名在与集合运算符配合使用的 SELECT 语句的 ORDER BY 子句中是不允许的。 | 带有集合运算符的 SELECT 语句包含 ORDER BY 子句,它指定列名。 在此情况下,ORDER BY 子句中的列的列表必须仅包含整数。
无法处理该语句。 |
在 ORDER BY 子句中的列的列表中仅指定整数。
注意:此错误仅适用于版本 2 之前的 DB2 发行版,以及通过 DB2 Connect 访问的主机。 sqlcode:-207 sqlstate:42706 |
SQL0208N |
因为列 名称 不是结果表的一部分,所以 ORDER BY 子句无效。 | 因为在 SELECT 列表中未指定在 ORDER BY 列表中指定的列 名称 并且该列不在结果表中,所以语句无效。 当 SELECT 语句的全查询不是子查询时,仅结果表中的列可用于排序该结果。
无法处理该语句。 |
要更正语句语法,向结果表中添加指定列,或者从 ORDER BY 子句中删除指定列。
sqlcode:-208 sqlstate:42707 |
SQL0212N |
名称 是重复的表标志符,或在触发器定义的 REFERENCING 子句中多次指定。 | 由 名称 指定的外部表、视图、别名或相关名与同一个 FROM 子句中的另一个外部表、视图、别名或相关名完全相同。
如果语句是 CREATE TRIGGER,那么 REFERENCING 子句可能指定了与主题表相同的名称,或者多个 OLD 或 NEW 相关名、NEW_TABLE 或 OLD_TABLE 标识有同一名称。 无法处理该语句。 |
重写 SELECT 语句的 FROM 子句。 使相关名与表、视图或别名相关,使得没有外部表、视图、别名或相关名与 FROM 子句中的任何其他外部表、视图、别名或相关名相同。
对于 CREATE TRIGGER 语句,更改 REFERENCING 子句中的名称以避免重复。 sqlcode:-212 sqlstate:42712 |
SQL0213N |
参数 参数名 不在例程 例程名 中。 | 名称为 参数名 的参数在例程 例程名 中不存在。 | 请为该例程指定现有参数名,然后重新提交该语句。
sqlcode:-213 sqlstate:42703 |
SQL0214N |
在以下位置的 ORDER BY 子句中的表达式,或在 clause-type 子句中以 expression-start-or-order-by-position 开始的表达式无效。 原因码:原因码。 | 由 子句类型 子句中的表达式 表达式开始或按位置排序 的第一部分标识的表达式无效,原因由 原因码 指定,如下所示:
无法处理该语句。 |
根据下面 原因码 所指定的原因来修改 SELECT 语句:
sqlcode:-214 sqlstate:42822 |
SQL0216N |
在谓词运算符两边的元素数不匹配。 谓词运算符是 谓词运算符。 | 谓词包括谓词运算符右边或左边(或两边)的元素的列表。 两边的元素数必须相同。 这些元素可能出现在用圆括号括起来的表达式列表中,或作为全查询中选择列表的元素出现。
无法处理该语句。 |
更正在谓词运算符两边有不匹配元素数的谓词。
sqlcode:-216 sqlstate:428C4 |
SQL0217W |
当仅在处理 Explain 信息请求时不执行语句。 | Explain 专用寄存器之一的当前值已设置为 EXPLAIN。 此值允许预编译并说明动态 SQL 语句,但是阻止执行任何动态语句。 | 通过从遇到此状态的接口或应用程序发出适当的 SET 语句,将适当的 Explain 专用寄存器的值更改为除 EXPLAIN 之外的设置。
sqlcode:+217 sqlstate:01604 |
SQL0219N |
必需的 Explain 表 名称 不存在。 | 调用了说明工具,但找不到必需的 Explain 表 名称。 Explain 表必须在调用说明工具之前创建。 | 创建必需的 Explain 表。 创建 Explain 表所需的“SQL 数据定义语言” 语句可在 sqllib 下 misc 目录中称为 EXPLAIN.DDL 的文件中得到。
sqlcode:-219 sqlstate:42704 |
SQL0220N |
Explain 表 名称 的列 名称-2 的定义不正确或者丢失。 |
调用了说明工具,但 Explain 表 名称 没有期望的定义。 定义可能由于以下原因而不正确:
|
更正指定的 Explain 表的定义。 创建 Explain 表所需的“SQL 数据定义语言” 语句可在 sqllib 下 misc 目录中称为 EXPLAIN.DDL 的文件中得到。
如果在应用更新之后开始发生此错误,那么 Explain 表的必需格式可能已更改。 在这种情况下,请将定义手动调整为当前格式,或者使用 db2exmig 工具将定义调整为当前格式。 调整 Explain 表定义之后,重新发出该命令。 sqlcode:-220 sqlstate:55002 |
SQL0222N |
对使用游标 游标名 的孔尝试执行了操作。 | 如果 SQLSTATE 是 24510,那么发生错误。 对定义为 SENSITIVE STATIC 的游标 游标名 尝试执行了定位更新或删除,且当前行已经标识为删除孔或更新孔。 当 DB2 尝试更新或删除与游标 游标名 的结果表的当前行相对应的数据库中的行时出现了孔,并且基础表的相应行不再存在。
如果 SQLSTATE 是 02502,那么这是一个警告。 在处理对游标 游标名 的访存时检测到删除孔或更新孔。 当 DB2 尝试重新访存与游标 游标名 的结果表的当前行相对应的数据库中的一行时出现了孔,并且基础表的相应行不再存在。 未返回任何数据。 当已经删除了基础表的相应行时,出现了删除孔。 当在基础表中更新了基础表的相应行时出现了更新孔,以致于更新的行不再满足在游标的 SELECT 语句中指定的搜索条件。 无法处理该语句。 游标仍然处于孔中。 |
发出 FETCH 语句来定位一行上不是孔的游标。
sqlcode:-222 sqlstate:02502, 24510 |
SQL0224N |
结果表与使用游标 游标名 的基本表不一致。 | 尝试使用某一行上定义为 SENSITIVE STATIC 的游标 游标名 来执行定位的 UPDATE 或 DELETE,而结果表中的列值与基本表行中的当前值不匹配。 这些行不匹配,因为在将基本表的行访存到结果表与处理定位 UPDATE 或 DELETE 之间这段时间更新了基本表的行。
无法处理该语句。 游标位置未变。 |
更改隔离级别,以便在游标操作期间不能再更新基本表行,或者更改应用程序,以便执行 FETCH INSENSITIVE,并再次尝试定位 UPDATE 或 DELETE。
sqlcode:-224 sqlstate:24512 |
SQL0225N |
游标 游标名 FETCH 语句无效,因为该游标未定义为 SCROLL。 | 已经用下列可滚动游标关键字之一指定了不可滚动游标 游标名 的 FETCH 语句:PRIOR、FIRST、LAST、BEFORE、AFTER、CURRENT、ABSOLUTE 或 RELATIVE。 对不可滚动游标仅可指定 NEXT。 未访存任何数据。
无法处理该语句。 游标位置未变。 |
更改 FETCH 语句以移除当前访存定向关键字(例如 PRIOR 或 FIRST),并将它替换为 NEXT。 另外,将游标的定义更改为可滚动。
sqlcode:-225 sqlstate:42872 |
SQL0227N |
不允许 FETCH NEXT、PRIOR、CURRENT 或 RELATIVE,因为游标 游标名 的位置未知(sqlcode,sqlstate)。 | 游标名 的游标位置未知。 在处理多个检索到的行的过程当中,游标 游标名 的先前多行 FETCH 导致了错误(SQLCODE sqlcode 以及 SQLSTATE sqlstate)。 在发生错误之后,所请求的一行或多行不能返回到程序中,游标的位置仍然未知。
如果在先前的多行 FETCH 中已经提供了指示符结构,那么将已经返回了正的 SQLCODE,并且所检索到的所有行可能已经返回至应用程序。 无法处理该语句。 游标位置未变。 |
关闭游标,再重新打开该游标,以便复位其位置。 对于可滚动游标,可以更改 FETCH 语句以指定其他访存定向之一,例如:FIRST、LAST、BEFORE、AFTER 或 ABSOLUTE,以便建立有效的游标位置,并访存一行数据。
sqlcode:-227 sqlstate:24513 |
SQL0228N |
为只读游标 游标名 指定了 FOR UPDATE 子句。 | 游标 游标名 被定义为 INSENSITIVE SCROLL,但是相应的 SELECT 语句包含 FOR UPDATE 子句。
无法处理该语句。 |
要定义只读游标,在 DECLARE CURSOR 上指定 INSENSITIVE,但是不要将 FOR UPDATE 子句指定为游标的 SELECT 语句的一部分。
sqlcode:-228 sqlstate:42620 |
SQL0231W |
游标 游标名 的当前位置对于当前行的 FETCH 无效。 | 对可滚动游标 游标名 发出了 FETCH CURRENT 或 FETCH RELATIVE 0 语句。 该操作无效,因为游标未定位在结果表的某行上。 当前行的 FETCH 不允许跟在 FETCH BEFORE 或 FETCH AFTER 语句后面,或者跟在导致了 SQLCODE +100 的 FETCH 语句的后面。
无法处理该语句。 游标位置未变。 |
在尝试访存当前行之前,确保游标定位在结果表的某行上。
sqlcode:+231 sqlstate:02000 |
SQL0236W |
SQLDA 仅提供了 整数-1 个 SQLVAR 条目。 integer2 integer3 列需要 SQLVAR 条目。 未设置 SQLVAR 条目。 | SQLDA 的 SQLN 字段的值至少应与结果集中的列数一样大。
数据库管理器未设置任何 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设为空格字符))。 |
将 SQLDA 中 SQLN 字段的值增大到消息中指示的值(确保 SQLDA 足够大以支持该数量),并重新提交该语句。
sqlcode:+236 sqlstate:01005 |
SQL0237W |
SQLDA 仅提供了 整数-1 个 SQLVAR 条目。 由于至少其中一个描述的列是单值类型,因此应指定了 整数-2 个 SQLVAR 条目。 未设置任何“辅助 SQLVAR”条目。 | 由于结果集其中至少一列为单值类型,因此应为 SQLVAR 条目(条目数两倍于结果集中的列数)提供空间。 数据库管理器仅设置了基本 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设为空格字符))。 | 如果不需要有关结果集中单值类型的更多信息,那么不需要执行任何操作。 如果需要单值类型的信息,那么 SQLDA 中 SQLN 字段的值应该增大到消息中指示的值(在确保 SQLDA 足够大来支持该值之后),并且应重新提交语句。
sqlcode:+237 sqlstate:01594 |
SQL0238W |
SQLDA 仅提供了 整数-1 个 SQLVAR 条目。 由于描述的列中至少有一列是 LOB 或结构化类型,因此 integer2 列需要 integer3 SQLVAR 条目。 未设置 SQLVAR 条目。 | 由于结果集中至少有一列是 LOB 或结构化类型,因此必须为两倍于结果集中列数的 SQLVAR 条目提供空间。 还要注意,结果集中一列或多列可能是单值类型。
数据库管理器未设置任何 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设置为空格字符))。 |
将 SQLDA 中 SQLN 字段的值增大到消息中指示的值(在确保 SQLDA 足够大来支持该值之后),并重新提交该语句。
sqlcode:+238 sqlstate:01005 |
SQL0239W |
SQLDA 仅提供了 整数-1 个 SQLVAR 条目。 由于描述的列中至少有一个是独立类型或引用类型,因此 integer2 列需要 integer3 SQLVAR 条目。 未设置 SQLVAR 条目。 | 如果结果集中的任何列都为单值类型或引用类型,那么应为两倍于结果集中列数的 SQLVAR 条目提供空间。
数据库管理器未设置任何 SQLVAR 条目(且 SQLDOUBLED 标志已设置为“关”(即设置为空格字符))。 |
如果需要单值类型或引用类型的信息,那么 SQLDA 中 SQLN 字段的值应该增大为消息中指示的值(在确保 SQLDA 足够大,可支持该数量之后),并且应重新提交语句。 如果不需要有关结果集中的单值类型或引用类型的其他信息,那么有可能重新提交该语句,以只提供足够的 SQLVAR 条目来容纳结果集中的列数。
sqlcode:+239 sqlstate:01005 |
SQL0242N |
对象列表中多次指定了名为 对象名,且类型为 对象类型 的对象。 | 在类型为 对象类型 的对象名列表中,多次指定了名为 对象名 的对象。 不能多次对该对象执行该语句的操作。 | 更正列表中重复的对象,移除重复出现的那些对象。
sqlcode:-242 sqlstate:42713 |
SQL0243N |
不能为指定的 SELECT 语句定义 SENSITIVE 游标 游标名。 | 游标 游标名 已定义为 SENSITIVE,但 SELECT 语句的内容要求数据库管理器构建该游标的临时结果表,而数据库管理器无法保证在此游标外部进行的更改是可视的。 当查询的内容使结果表为只读时,就会发生这种情况。 例如,如果查询中包括连接,那么结果表是只读的。 在这些情况下,游标必须定义为 INSENSITIVE 或 ASENSITIVE。
无法处理该语句。 |
更改查询的内容以便产生不是只读的结果表,或者将游标的类型更改为 INSENSITIVE 或 ASENSITIVE。
sqlcode:-243 sqlstate:36001 |
SQL0244N |
在 FETCH 上指定的 SENSITIVITY 灵敏度 对于游标 游标名 无效。 |
在 FETCH 上指定的灵敏度选项 灵敏度 与对游标 游标名 有效的灵敏度选项有冲突。 以下列表显示了在 FETCH 上可以指定的内容: 对于不可滚动游标,不能指定灵敏度选项。 无法处理该语句。 |
更改或移除在 FETCH 上指定的灵敏度选项。
sqlcode:-244 sqlstate:428F4 |
SQL0245N |
对 例程名 例程的调用具有多义性。 位于位置 位置 的自变量没有最佳匹配。 | 在 SQL 语句中引用例程时,数据库管理器必须准确地确定所要调用的例程。 对于函数而言,此过程称为“函数解析”,它既适用于内置函数也适用于用户定义的函数。 当函数调用存在多义性时,将返回此错误。 如果可能有两个或更多候选函数满足函数解析的条件,就会发生这种情况。
在这种情况下,这两个候选函数在位置 position 中都有参数,但是它们的参数的数据类型不在同一个数据类型优先顺序列表中。 将无法确定自变量的最佳匹配。 |
更改 SQL 语句以将此自变量显式强制类型转换为期望的数据类型、函数的定义或 SQL 路径,以消除这一组候选函数之间的多义性,然后再次尝试调用此函数。
sqlcode:-245 sqlstate:428F5 |
SQL0257N |
不支持原始设备容器。 | 尝试了使用原始设备容器,但是存在下面的其中一种情况:
|
在 DB2 pureScale 环境中:
不需要任何响应。 在 DB2 pureScale 环境中,不能使用原始设备容器。 在非 DB2 pureScale 的环境中:
sqlcode:-257 sqlstate:42994 |
SQL0258N |
当表空间的重新平衡操作处于暂挂状态或者正在进行时,既不能执行容器操作,也不能执行 REBALANCE。 | 下列其中一个条件为真:
|
作出适合于情况的响应:
sqlcode:-258 sqlstate:55041 |
SQL0259N |
表空间的容器映射太复杂。 | 映射结构保存表空间地址空间如何映射至各种容器的记录。 如果这过于复杂,那么不适合于表空间文件。 | 可能需要重新平衡表空间,以在容器中更均匀地分布数据。 这可能简化映射。
如果这不起作用,那么尝试将使尽可能多的容器大小相同。 现有的容器大小可通过备份表空间,然后使用数据库管理实用程序更改容器的方法来改变。 将表空间复原为新容器。 sqlcode:-259 sqlstate:54037 |
SQL0260N |
列 列名 不能属于分布键或表分区键,因为它是 LONG 列、DATALINK 列、XML 列、结构化类型列或已隐式添加到支持跟踪行修改的表的系统隐藏列。 | 分布键和表分区键都不能具有 LONG 列、DATALINK 列、XML 列、结构化类型列或已隐式添加到支持跟踪行修改的表的系统隐藏列。
无法处理该语句。 |
不要将 LONG 列、DATALINK 列、XML 列、结构化类型列或隐式添加的系统隐藏列用于分布键或表分区键。
如果表需要成为分布式表,而它只具有 LONG 列、DATALINK 列、XML 列、结构化类型列或隐式添加的系统隐藏列,请向该表添加可用于分布键的列,或者在单一分区数据库分区组中定义没有分布键的表。 如果表需要成为分区表,而它只具有 LONG 列、DATALINK 列、XML 列或结构化类型列,请添加可以用于该表的分区键的列,或者定义非分区表。 sqlcode:-260 sqlstate:42962 |
SQL0262N |
无法在数据库分区组 table-name 中创建表 group-name ,因为不存在可用作分布键的列。 | 不能在数据库分区组中创建表 表名。 表必须至少有一列可用作分布键。 不能在分布键中使用下列数据类型的列:
无法处理该语句。 |
使用一个或多个可在分布键中使用的列创建表,或在单个数据库分区组中创建表。
sqlcode:-262 sqlstate:428A2 |
SQL0263N |
从 成员编号-1 到 成员编号-2 的成员范围无效。 第二个成员编号必须大于或等于第一个成员编号。 | 所指定的成员范围无效。
无法处理该语句。 |
请更正该语句中的成员范围,然后再次尝试该请求。
sqlcode:-263 sqlstate:428A9 |
SQL0264N |
不能添加或删除分区键,因为表驻留在一个定义于多分区数据库分区组 名称 上的表空间中。 | 只能添加或删除一个位于单个数据库分区组中的表上的分区键。
无法处理该语句。 |
执行下列其中一项操作并再次尝试该请求:
sqlcode:-264 sqlstate:55037 |
SQL0265N |
在数据库分区号列表中检测到重复的成员编号或者数据库分区号。 | 对于 CREATE DATABASE PARTITION GROUP 语句,一个数据库分区号在 ON DBPARTITIONNUMS 子句中只能出现一次。
对于 CREATE TABLESPACE 和 ALTER TABLESPACE 语句,数据库分区号只能出现一次,并且只能出现在一个 ON DBPARTITIONNUMS 子句中。 对于 ALTER DATABASE PARTITION GROUP 语句或 REDISTRIBUTE DATABASE PARTITION GROUP 命令,发生了下列其中一种情况:
无法处理该语句。 对于调用 WLM_ALTER_MEMBER_SUBSET 语句,要添加的成员已经是成员子集的成员。 |
请确保 ON DBPARTITIONNUMS、ADD DBPARTITIONNUMS 或 DROP DBPARTITIONNUMS 子句中的数据库分区名或者数据库分区号是唯一的。 对于 CREATE TABLESPACE 和 ALTER TABLESPACE 语句,请确保数据库分区号不在多个 ON DBPARTITIONNUMS 子句中出现。
此外,对于 ALTER DATABASE PARTITION GROUP 语句或 REDISTRIBUTE DATABASE PARTITION GROUP 命令:
对于调用 WLM_ALTER_MEMBER_SUBSET 语句,请将该成员号从成员列表中移除。 sqlcode:-265 sqlstate:42728 |
SQL0266N |
所指定的成员编号或者数据库分区号 成员编号 无效。 | 所指定的成员编号或数据库分区号 成员编号 由于下列其中一种原因而无效:
无法处理该语句。 |
根据情况:
sqlcode:-266 sqlstate:42729 |
SQL0268N |
当正在重新分发数据库分区组时,不能执行 操作。 |
下列其中一项适用,由 操作 指示:
无法处理该语句。 |
等到完成重新分发之后再次尝试该请求。
sqlcode:-268 sqlstate:55038 |
SQL0269N |
数据库包含最大分区映射数。 | 由于数据库包含最大分区映射数(32,768),因此不能创建新的数据库分区组、改变数据库分区组或重新分发现有数据库分区组。
无法处理该语句。 |
删除数据库中的一个或多个数据库分区组。
注意:删除数据库分区组将删除驻留在该数据库分区组中的所有数据库对象(例如,表空间、表和视图)。 sqlcode:-269 sqlstate:54033 |
SQL0270N |
功能不受支持(原因码 = Reason-code)。 | 因为该语句违反下列原因码所指示的限制,所以不能对其进行处理:
|
与原因码对应的操作如下所示:
sqlcode:-270 sqlstate:42997 |
SQL0271N |
FID 为 fid 的表的索引文件丢失或无效。 | 在处理期间,fid 为 fid 的表的索引文件是必需的。 文件丢失或无效。
无法处理该语句,且应用程序仍连接至数据库。 此情况不影响没有使用此表上的索引的其他语句。 |
确保所有用户已与数据库断开连接,然后对所有节点发出 RESTART DATABASE 命令。 然后再次尝试该请求。
在重新启动数据库时已重新创建该索引(或多个索引)。 sqlcode:-271 sqlstate:58004 |
SQL0276N |
连接失败,因为数据库处于“复原暂挂”状态或“升级暂挂”状态。 数据库名称:数据库名称。 | 可能会由于以下两个原因而返回此消息:
|
sqlcode:-276 sqlstate:08004 |
SQL0279N |
在 COMMIT 或 ROLLBACK 处理期间,已终止了数据库连接。 该事务可能为不确定事务。 原因码:原因码。 | 落实处理遇到了错误。 该事务已置于落实状态,但落实处理可能未完成。 应用程序的数据库连接已终止。
原因码 指示了发生错误的原因:
|
确定引起错误的原因。 可能需要与系统管理员联系以获取帮助,因为该错误的最常见原因为节点故障或连接故障。 RESTART DATABASE 命令将完成对此事务的落实处理。
sqlcode:-279 sqlstate:08007 |
SQL0280W |
视图、触发器或具体化查询表 名称 替换了现有的不可用视图、触发器或具体化查询表。 |
以下列内容替换了现有不可用视图、触发器或具体化查询表 名称:
|
不需要执行任何操作。
sqlcode:+280 sqlstate:01595 |
SQL0281N |
因为表空间 表空间名 是系统管理的表空间,所以不能用其他容器来进行更改。 | 其他容器不可添加到系统管理的表空间。 这条规则的例外是,当修改数据库分区组以添加无表空间的节点时,可使用 ALTER TABLESPACE 命令在新节点上添加一次容器。 一般情况下,表空间必须由数据库管理以便添加其他容器。
无法处理该语句。 |
要将更多的容器添加至系统管理表空间,可删除并重新创建有更多容器的表空间,同时应确保每个容器大小相同且小于容器大小限制,或更改为 DMS 表空间。
sqlcode:-281 sqlstate:42921 |
SQL0282N |
不能删除表空间 表空间名,原因是,它当中至少有一个表 表名,它的一个或多个部分在另一个表空间中。 | 指定的表空间中的表的所有部分不全包含在该表空间中。 如果指定了多个表空间,那么其中一个指定表空间中的表未在列表中包含其所有部分。 基本表、索引或长数据可能在另一表空间中,所以删除表空间将不会完全删除该表。 这将使该表处于不一致的状态,因而不能删除表空间。 | 在尝试删除表空间之前,确保表空间 表空间名 中包含的所有对象包含它们在此表空间中的所有部件,或者包括包含列表中要删除的部件的那些表空间。
这可能要求在删除表空间之前删除表 表名。 sqlcode:-282 sqlstate:55024 |
SQL0283N |
不能删除系统临时表空间 表空间名,因为它是数据库中页大小为 页大小 的唯一系统临时表空间。 | 数据库必须至少包含一个与目录表空间具有相同页大小的系统临时表空间。 删除表空间 表空间名 将从数据库中 移除最后一个页大小为 页大小 的系统临时表空间。 | 在尝试删除此表空间之前,确保数据库中有另一个页大小为 页大小 的系统临时表空间。
sqlcode:-283 sqlstate:55026 |
SQL0284N |
表创建失败,因为在子句 clause 之后的语句中指定的表空间 tablespace-name 不是该子句支持的表空间类型。 表空间类型:表空间类型。 | 如果尝试创建一个表,但要创建该表的表空间的类型不支持其属性,那么会返回此消息。
如果执行以下类型的 SQL 语句,那么会返回此消息:
可导致返回此消息的不兼容性种类的示例包括以下情况:
|
更正该语句以对 子句 子句指定具有正确类型的表空间。
sqlcode:-284 sqlstate:42838 |
SQL0285N |
表 table-name 的索引和/或长列不能分配给单独的表空间,因为主表空间 tablespace-name 是系统管理的表空间。 | 如果主表空间为系统管理表空间,那么必须在该表空间中包含所有表部分。 仅当主表空间、索引表空间和长表空间是数据库管理的表空间时,表的各部分才可以在单独的表空间中。 | 为主表空间指定一个数据库管理的表空间,或者不将表的各部分分配给另一个表空间。
sqlcode:-285 sqlstate:42839 |
SQL0286N |
找不到页大小至少为 页大小 且许可授权标识 用户名 使用的表空间。 | CREATE TABLE、CREATE GLOBAL TEMPORARY TABLE 或 DECLARE GLOBAL TEMPORARY TABLE 语句未指定表空间,找不到具有足够页大小(至少为 页大小),且具有正确类型(对于已创建的临时表或者已声明的临时表,为 USER TEMPORARY),而授权标识 用户名 对其具有 USE 特权的表空间。
表的足够页大小是由行的字节数或列数确定的。 |
确保存在具有正确类型(REGULAR 或 USER TEMPORARY),且页大小至少应为 页大小,并且授权标识 用户名 对其具有 USE 特权的表空间。
sqlcode:-286 sqlstate:42727 |
SQL0287N |
SYSCATSPACE 不可用于用户对象。 | CREATE TABLE 或 GRANT USE OF TABLESPACE 语句指定了一个名为 SYSCATSPACE 的表空间,而它是为目录表保留的。 | 指定一个不同的表空间名。
sqlcode:-287 sqlstate:42838 |
SQL0288N |
语句失败,因为在指定 MANAGED BY SYSTEM 子句时无法定义大型表空间。 | 定义大型表空间来存储大对象和长字符串。 这些对象只能存储在定义为自动存储器的表空间中。
尝试将大型表空间建立为系统管理的表空间时,会返回此消息。 |
要解决此消息报告的问题,以下是您可以执行的某些操作示例:
sqlcode:-288 sqlstate:42613 |
SQL0289N |
无法在表空间 表空间名 中分配新页面。 | 在一个或多个数据库分区上,下列其中一个条件为真:
|
执行与引起错误的原因对应的操作:
sqlcode:-289 sqlstate:57011 |
SQL0290N |
不允许访问表空间。 | 进程尝试访问一个处于无效状态的表空间,处于该状态的表空间不允许进行预期的访问。
|
可能的操作包括:
请参阅《管理指南》,以了解有关表空间状态的更多信息。 sqlcode:-290 sqlstate:55039 |
SQL0291N |
表空间不允许状态过渡。 | 尝试更改表空间状态。 新状态与表空间当前状态不兼容,或者尝试关闭某种状态而表空间不处于该状态。 | 当进行备份、加载完成、前滚完成等时,表空间状态会发生变化, 这取决于表空间的当前状态。 请参阅系统管理指南,以了解有关表空间状态的更多信息。
sqlcode:-291 sqlstate:55039 |
SQL0292N |
不能创建内部数据库文件。 | 不能创建内部数据库文件。 | 检查包含文件的目录是否可由数据库实例所有者访问(例如,安装)和写入。
sqlcode:-292 sqlstate:57047 |
SQL0293N |
访问表空间容器时出错。 | 此错误可能是由下列其中一种情况引起的:
数据库启动期间和 ALTER TABLESPACE SQL 语句的处理期间可能会返回此错误。 |
尝试下列操作:
如果处理带有 SWITCH ONLINE 选项的 ALTER TABLESPACE SQL 语句时返回此错误,请在解决问题之后重新发出该语句。 如果错误仍存在,请与 IBM 服务代表联系。 sqlcode:-293 sqlstate:57048 |
SQL0294N |
容器已在使用中。 | 无法共享表空间容器。 导致此错误的可能原因包括下列各项。
|
确保容器唯一。
sqlcode:-294 sqlstate:42730 |
SQL0295N |
表空间所有容器名的组合长度太长。 | 存储容器列表所需的总空间超过在表空间文件中分配给此表空间的空间。 |
尝试下列一个或多个操作:
sqlcode:-295 sqlstate:54034 |
SQL0296N |
CREATE 语句失败,因为已达到此对象的数据库限制。 限制:限制数目。 对象类型关键字:对象关键字 | 如果在为数据库定义的该类型的数据库对象已经达到最大数目的情况下继续尝试创建数据库对象,就会返回此消息。 | 通过下列其中一种方式对此错误作出响应:
sqlcode:-296 sqlstate:54035 |
SQL0297N |
容器或存储路径的路径名太长。 |
下列其中一个条件为真:
|
缩短路径长度。
sqlcode:-297 sqlstate:54036 |
SQL0298N |
错误的容器路径。 | 容器路径违反下列需求之一:
如果发生阻止 DB2 访问容器的任何其他意外错误,那么也将返回此消息。 如果您正在使用集群管理器,那么当数据库管理器无法将数据库容器路径添加到集群管理器配置时,可能会返回此错误。 如果集群管理器无法访问此路径,那么集群管理器将不能成功地管理涉及到此路径的故障转移。 集群管理器中生成的错误消息将记录在 db2diag 日志文件中。 |
指定另一个容器位置或更改容器以使其可被 DB2 接受(如更改文件许可权),然后再次尝试。
如果您正在使用集群管理器,那么更正问题并重新提交该命令:
sqlcode:-298 sqlstate:428B2 |
SQL0299N |
容器已经分配给表空间。 | 欲添加的容器已经分配给表空间。 | 选择另一个容器,然后再次尝试。
sqlcode:-299 sqlstate:42731 |
SQL0301N |
因为数据类型方面的问题,无法使用输入变量、表达式或编号为 编号 的参数的值。 | 无法按语句中指定的方式使用变量、表达式或者位置 编号 中的参数,因为其数据类型与它的值的预期用法不兼容。
可能会由于在 EXECUTE 或 OPEN 语句上的 SQLDA 中指定不正确的主机变量,或不正确的 SQLTYPE 值而发生此错误。 如果是用户定义的结构化类型,主机变量或 SQLTYPE 的关联内置类型可能与该语句的变换组中定义的 TO SQL 变换函数的参数不兼容。 在字符和图形数据类型之间执行隐式或显式强制类型转换的情况下,此错误指示以非 Unicode 字符或图形字符串尝试此强制类型转换。 无法处理该语句。 |
验证语句中所有主机变量的数据类型与使用它们的方式是兼容的。
sqlcode:-301 sqlstate:07006 |
SQL0302N |
EXECUTE 或 OPEN 语句中主机变量的值超出了其相应的使用范围。 | 发现输入主机变量的值对于其在 SELECT、VALUES 或预编译语句中的使用而言已超出了范围。
发生了下列情况之一:
由于在 EXECUTE 或 OPEN 语句上的 SQLDA 中指定了不正确的主机变量或不正确的 SQLLEN 值,因此发生此错误。 无法处理该语句。 |
确保输入主机变量值的类型和长度正确。
如果输入主机变量向参数标记提供值,那么使这些值与参数标记的隐含数据类型和长度相匹配。 联合系统用户:对于传递会话,请确定导致该错误的数据源。 检查该数据源的 SQL 方言以确定违反了哪个特定限制,并根据需要来调整失败的语句。 sqlcode:-302 sqlstate:22001, 22003 |
SQL0303N |
不可将值赋给 SELECT、VALUES、FETCH 或赋值语句中的主机变量,因为数据类型不兼容。 | 嵌入的 SELECT、VALUES、FETCH 或赋值语句赋值给主机变量,但该变量的数据类型与对应的 SELECT 列表、VALUES 列表或赋值语句元素右边不兼容。 对于用户定义的数据类型,用来定义主机变量的关联内置数据类型可能与该语句的变换组中定义的 FROM SQL 变换函数的结果类型不兼容。 例如,如果列的数据类型是日期或时间,那么变量的数据类型必须为有适当最小长度的字符。
无法处理该语句。 |
验证表定义是否是最新的,且主机变量的数据类型是否正确。 对于用户定义的数据类型,验证主机变量的关联内置类型与该语句的变换组中定义的 FROM SQL 变换函数的结果类型是否兼容。
sqlcode:-303 sqlstate: 42806 |
SQL0304N |
不能赋值给主机变量,因为该值不在主机变量的数据类型的范围之内。 | 对主机变量列表执行的 FETCH、VALUES、SELECT 或赋值失败,因为主机变量不够大,所以不能容纳检索到的值。
无法处理该语句。 未检索到数据。 |
验证表定义是否是当前的,并且主机变量是否具有正确的数据类型。 有关 SQL 数据类型的范围,请参阅 SQL Reference。
联合系统用户:有关数据源返回的数据类型的范围,请参阅该数据源的文档。 sqlcode:-304 sqlstate:22001, 22003 |
SQL0305N |
因为没有指定指示符变量,所以不能将 NULL 值赋给主机变量。 | FETCH、赋值、嵌入式 SELECT 或 VALUES 操作检索到用以插入主机变量的 NULL 值,但未对该主机变量提供指示符变量。 如果列可能返回空值,那么必须提供指示符变量。
无法处理该语句。 未检索到数据。 |
请检查 FETCH 或 SELECT 对象表的定义、VALUES 列表的元素或者赋值语句的右边。 更正程序,以便为所有可能从其列中检索到 NULL 值的主机变量提供指示符变量。
sqlcode:-305 sqlstate:22002 |
SQL0306N |
主机变量 名称 未定义。 | 主机变量 名称 未在任何 DECLARE SECTION 中声明。
无法处理该语句。 |
确保声明了主机变量且名称拼写正确。 |
SQL0307N |
主机变量 名称 已定义。 | 主机变量 名称 已在 DECLARE SECTION 中声明。
忽略该定义。 使用先前的定义。 |
确保正确拼写主机变量名,且对于每一个程序该名称仅定义一次。 |
SQL0308N |
主机变量数的限制已达到。 | 主机变量数的限制取决于多少主机变量适合于 SYSPLAN 的 HOST_VARS 列。 已达到此限制。
忽略剩余的变量声明。 |
简化程序,将程序分成更小的单独程序,或者两者都进行。 |
SQL0309N |
OPEN 语句中的主机变量的值为 NULL,但其相应的使用不可为 NULL。 | 发现输入主机变量的值为 NULL,但是在 SELECT、VALUES 或预编译语句中的相应使用未指定指示符变量。
无法处理该语句。 |
确保需要 USING 子句。 否则,确保仅当必要时才指定指示符变量。
sqlcode:-309 sqlstate:07002 |
SQL0310N |
SQL 语句包含太多的主机变量。 | 在语句中超过了主机变量的最大数目。
无法处理该语句。 |
确保该语句带有更少的主机变量或者不太复杂。 |
SQL0311N |
字符串主机变量号 变量号 的长度为负数或者大于最大值。 | 求值时,字符串主变量的长度规范(其 SQLDA 中的条目由 <var-number>(基于 1)表示)为负或大于为该主变量定义的最大值。
无法处理该语句。 |
更正程序以确保所有字符串主机变量的长度都不是负数,或它们不大于允许的最大长度。
sqlcode:-311 sqlstate:22501 |
SQL0312N |
未处理该语句,因为未定义以下主机变量或以不受支持的方式使用了以下主机变量:变量名。 | 以下列无效方式使用主机变量时,可能会返回此消息:
|
执行下列其中一个步骤,然后再次执行该语句:
sqlcode:-312 sqlstate:42618 |
SQL0313N |
EXECUTE 语句中的变量数、OPEN 语句中的变量数或者参数化游标的 OPEN 语句中的自变量数与所需值的数目不同。 | EXECUTE 或 OPEN 语句中指定的变量数与 SQL 语句中出现的参数标记所需变量的数目不同。
如果引用了参数化游标,那么游标自变量的数目与所需数目不同。 |
更正应用程序,以使 EXECUTE 或 OPEN 语句中指定的变量数对于 SQL 语句中的参数标记而言正确。
更正参数化游标引用,以便指定数目正确的自变量。 sqlcode:-313 sqlstate:07001, 07004 |
SQL0314N |
不正确地声明了主机变量 名称。 | 因为下列其中一种原因,未正确地声明主机变量 名称:
变量仍未定义。 |
确保仅正确地指定了数据库管理器支持的声明。 |
SQL0315N |
未正确地声明主机变量。 |
因为下列其中一种原因,未正确地声明主机变量:
变量仍未定义。 |
确保仅正确地指定了数据库管理器支持的声明。 |
SQL0317N |
在 BEGIN DECLARE SECTION 之后未找到 END DELCARE SECTION。 | 在处理 DECLAR SECTION 期间到达输入末尾。
预编译终止。 |
添加 END DECLARE SECTION 语句以结束 DECLARE SECTION。 |
SQL0318N |
找到 END DECLARE SECTION,但没有前面的 BEGIN DECLARE SECTION。 | 找到 END DECLARE SECTION 语句,但没有前面的 BEGIN DECLARE SECTION。
无法处理该语句。 |
在 END DECLARE SECTION 前面输入 BEGIN DECLARE SECTION。 |
SQL0324N |
用法 变量名 名称 的类型错误。 | INDICATOR 变量 名称 不是小整数,或者 STATEMENT 变量 名称 不是字符数据类型。
无法处理该语句。 |
确保变量是正确的类型且指定正确。 |
SQL0327N |
无法将行插入表 表名 中,因为它在定义的数据分区范围之外。 | 如果执行的操作是插入或更新,那么该行的表分区键的值不在任何已定义的数据分区的值范围内。
如果执行的操作是将表改变为分区表,那么该表中存在满足以下条件的一行或多行:其表分区键值不在任何已定义的数据分区的值范围内。 无法处理该语句。 |
对于插入或更新操作,请确保表分区键列在该表的数据分区的指定范围内。
可能需要将其他数据分区添加到该表。 如果将表改变为分区表,请确保指定必需的范围,以允许该表中的所有数据都在数据分区的范围内。 sqlcode:-327 sqlstate:22525 |
SQL0329N |
路径名列表 字符串常量或主机变量 无效。 | 字符串常量或输入主机变量 字符串常量或主机变量 包含无效的路径名列表。 已超过用于 SQL 路径(FUNCPATH 绑定选项或 CURRENT PATH 专用寄存器)或程序包路径(CURRENT PACKAGE PATH 专用寄存器)的最大模式名数目。 请参阅 SQL Reference 的“Limits”附录以了解有关此限制的详细信息。
不能处理语句或命令。 |
请指定较少的模式名以便不超出该限制。 考虑将用户定义的函数、过程、方法、单值类型或程序包合并为较少的模式。
sqlcode:-329 sqlstate:0E000 |
SQL0330N |
不能使用字符串,因为无法对其进行处理。 原因码=Reason-code。 代码点 = 代码点。 主机变量位置是 主机变量位置。 |
不能处理字符串,因为在将字符串转换为另一个编码字符集时发生了转换错误。 原因码 指示了错误类型:
如果 原因码 为 12,那么 代码点 是一个无效代码点。 否则,代码点 为空白或者是由出口返回的附加原因码。 如果字符串是输入主机变量的值,那么位置编号是 SQLDA 中的变量的序数。 如果字符串不是主机变量的值,那么位置编号为空白。 无法处理该语句。 |
根据原因码执行下列其中一项操作:
sqlcode:-330 sqlstate:22021 |
SQL0332N |
不支持从源代码页 源代码页 到目标代码页 目标代码页 的字符转换。 | 操作失败,因为 源代码页 与 目标代码页 之间不存在代码页转换。 这可能是由下列其中一个原因引起的:
可能会导致此错误的某些操作包括:
|
DB2 UDB iSeries 版的用户应该知道:具有 CCSID 65535 的字符列或图形列是不受支持的。 必须将使用 CCSID 65535 的字符列或图形列转换为受支持的 CCSID(使用 CAST 来进行转换)之后,才能使用 DB2 Connect 来访问这些列。 sqlcode:-332 sqlstate:57017 |
SQL0334N |
当执行从代码页 源 到代码页 目标 的转换时发生溢出。 目标区域的最大大小为 最大长度。 源字符串的长度为 源长度,且它的十六进制表示为 字符串。 | 在执行 SQL 语句期间,代码页转换操作产生的字符串比目标对象的最大大小还长。 | 根据不同的情况,采用下列方法修改数据,以避免发生溢出情况:
注意:将不会在字符转换过程中自动提升字符或图形字符串数据类型。 如果结果字符串长度超过源字符串的数据类型的最大长度,那么溢出已发生。 欲更正这种情况,可更改源字符串的数据类型,或者使用数据类型强制类型转换以允许由于转换而造成的字符串长度的增大。 sqlcode:-334 sqlstate:22524 |
SQL0336N |
十进制数的小数位必须为零。 | 十进制数用在小数位必须为零的上下文中。 当在 CREATE 或 ALTER SEQUENCE 语句中为 START WITH、INCREMENT、MINVALUE、MAXVALUE 或 RESTART WITH 指定了十进制数时,就会发生这种情况。
无法处理该语句。 |
更改该十进制数(从十进制定界符右边移除任何非零数位)。
sqlcode:-336 sqlstate:428FA |
SQL0338N |
与 JOIN 运算符相关联的 ON 子句或 MERGE 语句中的 ON 子句无效。 |
由于下列原因之一,与 JOIN 运算符相关联的 ON 子句或 MERGE 语句中的 ON 子句无效。
无法处理该语句。 |
更正 ON 子句以引用相应的列,或移除所有取消引用运算符。
如果正在使用全部外连接,那么确保 ON 子句中的所有函数都是确定的,且没有外部操作。 对于 MERGE 语句的 ON 子句,移除所有子查询、标量全查询、内联 SQL 函数或内联 SQL 方法。 sqlcode:-338 sqlstate:42972 |
SQL0340N |
公共表表达式 名称 与同一语句中出现的另一个公共表表达式定义有相同标识。 | 公共表表达式名 名称 用在语句中多个公共表表达式的定义中。 用于描述公共表表达式的名称在同一语句内必须是唯一的。
无法处理该语句。 |
更改其中一个公共表表达式的名称。
sqlcode:-340 sqlstate:42726 |
SQL0341N |
循环引用存在于公共表表达式 名称-1 和 名称-2之间。 | 公共表表达式 名称-1 引用其全查询中 FROM 子句中的 名称-2,而 名称-2 引用其全查询中 FROM 子句中的 名称-1。 不允许这种形式的循环引用。
无法处理该语句。 |
从其中一个公共表表达式中移除循环引用。
sqlcode:-341 sqlstate:42835 |
SQL0342N |
公共表表达式 名称 不能使用 SELECT DISTINCT,必须使用 UNION ALL,因为它是递归的。 |
有两种可能的解释:
无法处理该语句。 |
从公共表表达式中移除关键字 DISTINCT,在 UNION 后面添加关键字 ALL,或移除公共表表达式中的递归引用。
sqlcode:-342 sqlstate:42925 |
SQL0343N |
列名是递归公共表表达式 名称 所必需的。 | 递归公共表表达式 名称 必须在公共表表达式的标识后面包括列名的规范。
无法处理该语句。 |
在公共表表达式标识后面添加列名。
sqlcode:-343 sqlstate:42908 |
SQL0344N |
递归公共表表达式 名称 有一列 列名 具有不匹配的数据类型、长度或代码页。 | 递归公共表表达式 名称 有一列 列名,在公共表表达式的迭代全查询中引用了该列。 数据类型、长度和代码页是根据对此列的初始化全查询而设置的。 迭代全查询中的列 列名 的表达式的结果具有不同的数据类型、长度或代码页,这可能导致对列赋值失败。
无法处理该语句。 |
更正在递归公共表表达式的全查询中使用的列,使初始化列与选代列相匹配。
sqlcode:-344 sqlstate:42825 |
SQL0345N |
递归公共表表达式的全查询 名称 必须是两个或多个全查询的 UNION,并且不能包括列函数、GROUP BY 子句、HAVING 子句、ORDER BY 子句或包括 ON 子句的显式连接。 |
公共表表达式 名称 包括对其自身的引用,因此:
无法处理该语句。 |
通过以下操作更改公共表表达式:
sqlcode:-345 sqlstate:42836 |
SQL0346N |
对公共表表达式 名称 的无效引用发生在第一个全查询中,该引用在同一条 FROM 子句中第二次出现,或出现在子查询中的 FROM 子句中。 |
公共表表达式 名称 包括对其自身的无效引用,如下列其中一项所述。
无法处理该语句。 |
更改下列其中一项:
sqlcode:-346 sqlstate:42836 |
SQL0347W |
递归公共表表达式 名称 可能包含无限循环。 |
称为 名称 的递归公共表表达式可能未完成。 发出此警告是因为未找到作为递归公共表表达式迭代部分的一部分的特定语法。 期望的语法包括:
在递归公共表表达式中缺少此语法可能导致一个无限循环。 无论如何,递归公共表表达式的数据或某些其他特征可能允许该语句成功地完成。 |
要防止无限循环,如所述的那样包括期望的语法。
sqlcode:+347 sqlstate:01605 |
SQL0348N |
不能在此上下文中指定 序列表达式。 |
该语句在无效上下文中包含了 NEXT VALUE 表达式或 PREVIOUS VALUE 表达式。 不能在下列上下文中指定 NEXT VALUE 表达式和 PREVIOUS VALUE 表达式:
不能在下列上下文中指定 NEXT VALUE 表达式:
无法执行该语句。 |
移除对序列表达式的引用,并重新提交该语句。
sqlcode:-348 sqlstate:428F9 |
SQL0349N |
位置 列位置 处列的 NEXT VALUE 表达式的规范必须与所有行同一列的所有其他表达式的规范相匹配。 |
VALUES 表达式或是针对多行 INSERT 语句的 VALUES 子句中位置 列位置 处的列指定的表达式,包含有一个 NEXT VALUE 表达式。 当使用包含 NEXT VALUE 表达式的表达式在这些上下文之一中指定某列的值时,必须为所有行的该列指定相同的表达式。 例如,下列 INSERT 语句将成功: 但是,下列 INSERT 语句将失败: |
更正语法并重新提交该语句。
sqlcode:-349 sqlstate:560B7 |
SQL0350N |
在列数据类型不受支持的上下文中隐式或显式引用了 列名 列。 | 下列其中一项原因导致 ALTER 语句、CREATE 语句或 DECLARE GLOBAL TEMPORARY TABLE 语句无效:
对于其基本数据类型要受到前面列示的其中一项限制的单值类型列,该限制同样适用。 无法处理该语句。 |
从其数据类型不受支持的上下文中除去此列,或者更改此列的数据类型。 如果要对 XML 列或结构化类型列建立索引,那么应确保它是唯一的列并且索引定义中包括适当的子句。
sqlcode:-350 sqlstate:42962 |
SQL0351N |
在输出 SQLDA(选择列表)的位置 位置编号 中遇到不支持的 SQLTYPE。 | 位置 位置编号 处的 SQLDA 的元素用于不受应用程序请求器或应用程序服务器支持的数据类型。 如果应用程序不直接使用 SQLDA,那么 位置编号 可能表示选择列表中的元素或 CALL 语句参数的位置。
无法处理该语句。 |
更改该语句,排除不支持的数据类型。 对于 SELECT 语句,移除选择列表中任何具有不受支持数据类型的列的名称,或在查询中使用强制类型转换来将列强制类型转换为受支持的数据类型。
sqlcode:-351 sqlstate:56084 |
SQL0352N |
在输入列表(SQLDA)的位置 位置编号 中遇到不受支持的 SQLTYPE。 | 位置 位置编号 处的 SQLDA 的元素用于不受应用程序请求器或应用程序服务器支持的数据类型。 如果应用程序未直接使用 SQLDA,那么 位置编号 可能表示输入主机变量、参数标记或 CALL 语句参数的位置。
无法处理该语句。 |
更改该语句,排除不支持的数据类型。
sqlcode:-352 sqlstate:56084 |
SQL0355N |
定义的列 列名 太大而不能记录。 | 大对象数据类型(BLOB、CLOB 和 DBCLOB)最多可创建为 2 千兆字节的大小(2147483647 字节)。 只允许对大小小于或等于 1 千兆字节(1073741823 字节)的对象记录数据值。 因此,不能记录大于 1 千兆字节的大对象。 | 通过在列创建期间使用 NOT LOGGED 短语显式地指示不需要记录数据,或者减小列的最大大小至 1 千兆字节或以下。
sqlcode:-355 sqlstate:42993 |
SQL0356N |
由于键表达式无效,因此未创建索引。 键表达式:表达式编号。 原因码:原因码。 | 您可以创建包含基于表达式的键的表索引。 在尝试创建包含基于表达式的键的索引,并且符合下列其中一个条件时,将返回此消息:
运行时标记 表达式编号 标识了语句中无效的键表达式。 例如,如果 CREATE INDEX 语句中包含两个键表达式,并且第二个键表达式无效,那么 表达式编号 的值将是:“2”。 如果无法确定表达式编号,那么将返回缺省值“*”。 原因码指示了键表达式无效的原因:
|
请更正键表达式中的错误,然后重新发出该语句。
sqlcode:-356 sqlstate:429BX |
SQL0359N |
标识列或者序列的值范围用完。 | 数据库管理器尝试为标识列或序列对象生成一个值,但允许的所有值都已分配。
无法处理该语句。 |
对于标识列,用标识列的更大范围的值来重新定义该表。 如果已经执行了将值范围限制为小于该列的数据类型范围的 MAXVALUE 或 MINVALUE 规范,那么可以改变该列以便扩展有效值的范围。 否则,必须重新创建标识列,而它又要求重新创建表。 首先删除现有的表,然后用标识列的另一数据类型重新创建该表,指定比标识列的当前数据类型具有更大值范围的数据类型。
对于序列对象,以更大的值范围重新定义序列。 如果 MAXVALUE 或 MINVALUE 子句将值的范围限制为小于序列对象的数据类型的范围,那么可以改变该序列以便扩展有效值的范围。 否则,删除该序列对象,再重新发出 CREATE SEQUENCE 语句,它指定了允许更大值范围的数据类型。 sqlcode: -359 sqlstate:23522 |
SQL0360W |
因为表 表名 处于“Datalink 协调暂挂”(DRP)或“Datalink 协调不可能”(DRNP)状态,所以 DATALINK 值可能无效。 | 因为表 表名 处于“Datalink 协调暂挂”(DRP)或 “Datalink 协调不可能”(DRNP)状态,所以该表中的 DATALINK 值可能无效。 当处于这些状态之一时,将不能保证对 DB2 Data Links Manager 上的文件的控制。
语句处理继续。 |
请参阅《管理指南》中有关“Datalink 协调暂挂”(DRP) 和“Datalink 协调不可能”(DRNP) 状态的信息,以执行适当的操作。
sqlcode:+360 sqlstate:01627 |
SQL0361W |
操作成功,但是该操作的某些部分不成功。 标记 消息标记-1 和 消息标记-2 提供了有关操作 消息标记-3 的更多详细信息。 | 操作成功,成功地完成了所指定的操作的某些部分,但是此操作的某些部分不成功。 | 根据操作 消息标记-3 来确定要执行的操作:SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS – 无法成功地重新验证某些指定为要重新验证的对象,因为它们引用的对象中至少有一个不存在或者仍然无效。 未重新验证的一个对象是 消息标记-1,因为它引用了 消息标记-2 对象。 如果仍然需要重新验证尚未重新验证的对象,请创建应存在的所有对象,并更正要重新验证的对象所引用的仍然无效的所有对象。 SYSCAT.INVALIDOBJECTS 目录视图中包含有关这些无效对象的信息。 如果 消息标记-1 是指一个许可权或掩码对象,而 消息标记-2 包含 CREATE PERMISSION 或 CREATE MASK,请确保运行 ADMIN_REVALIDATE_DB_OBJECTS 的用户具有 SECADM 权限。
sqlcode:+361 sqlstate:0168B |
SQL0364W |
在 operation 操作期间发生了 DECFLOAT 异常 exception-type 。 | 在对数据类型为 DECFLOAT 的字段执行 运算类型 运算时,发生了异常 异常类型。 在处理算术表达式时发生了该异常。
异常类型 的可能值包括:
运算类型 的可能值包括:
可能是由于已对此运算转换为 DECFLOAT 的数据的临时内部副本,而发生了 DECFLOAT 异常。 在对内置函数执行处理期间,可能会发生其中的任一异常。 如果 运算类型 是 FUNCTION,那么在处理输入值、中间值或最终值时发生了异常。 原因可能是参数的值超出了范围。 语句处理继续。 |
要阻止返回此警告,请检查对其发出警告的表达式,以查看是否可以确定异常的原因或可能原因。 异常可能与数据相关,在这种情况下,将必须检查发生警告时正在处理的数据。 请参阅 SQL Reference 以获取受支持的 DECFLOAT 值范围。
sqlcode:+364 sqlstate:0168C sqlstate:0168D sqlstate:0168E sqlstate:0168F |
SQL0365N |
未处理该语句,因为位于位置 位置 的扩展指示符变量的值无效。 | 可以通过将指示符变量与主机变量配合使用在应用程序中表示 SQL 空值。 还可以通过将扩展指示符与主机变量配合使用来表示缺省值或未指定的值。
以下是有关扩展指示符的用法及使用位置的一些限制。 例如,缺省值 (-5) 或未指定的值 (-7) 不得用于 VALUES 子句(可指定多行值)中的扩展指示符变量。 当缺省值 (-5) 或未指定的值 (-7) 用在不允许使用这些值的上下文中时,会返回此消息。 运行时标记 位置 中的诊断信息:
|
将扩展指示符变量的值更改为对上下文可允许的值,在该上下文中将使用该值。
如果 位置 为 0,请通过下列其中一种方式作出响应:
sqlcode:-365 sqlstate:22539 |
SQL0368N |
未向数据库注册 DB2 Data Links Manager dlm-名称。 | 未向数据库注册 DB2 Data Links Manager dlm-名称。 如果数据库管理器配置参数 DATALINKS 设置为 NO,那么将忽略已注册的 Db2 Data Links Manager。 可能已使用 DROP DATALINKS MANAGER 命令删除了 DB2 Data Links Manager。 可能当前已注册了同名的 DB2 Data Links Manager 的新的替代者; 在这种情况下,错误与先前删除的该 DB2 Data Links Manager 的一个或多个替代者有关。
无法处理该语句。 |
确保数据库管理器配置参数 DATALINKS 设置为 YES。 应该使用 Reconcile 实用程序来移除与先前删除的 DB2 Data Links Manager 相链接的 DATALINK 值。 有关更多详细信息,请参阅命令参考中 DROP DATALINKS MANAGER 命令的用法说明。
sqlcode:-368 sqlstate:55022 |
SQL0370N |
位置 n 中的参数必须在 LANGUAGE SQL 函数 名称 的 CREATE FUNCTION 语句中命名。 | 用 LANGUAGE SQL 定义的函数的每个参数都必须要有参数名。
无法处理该语句。 |
包括该函数的每个参数的参数名。
sqlcode:-370 sqlstate:42601 |
SQL0372N |
对于 ROWID 列、标识列、安全标号列、“行更改时间戳记”列、“行开始”列、“行结束”列或“事务开始标识”列这些列类型,对于一个表只能指定一次。 | 尝试执行下列操作之一:
DB2 for z/OS 和 DB2 for iSeries 支持 ROWID 数据类型。 无法处理该语句。 |
对于 CREATE TABLE 语句,仅对表指定一次所指定的属性。 对于 ALTER TABLE 语句,表中已存在所指定的列。 请不要尝试在表中多次定义某个时间段。
sqlcode:-372 sqlstate:428C1 |
SQL0373N |
不能对列或 SQL 变量 名称 指定 DEFAULT 子句。 | 定义或更改列或 SQL 变量 名称 时指定了 DEFAULT 子句。 但是,列定义或者 SQL 变量声明的数据类型不支持 DEFAULT。 定义下列对象时,CREATE 或 ALTER TABLE 语句不能使用 DEFAULT 子句。
无法处理该语句。 |
移除 DEFAULT 子句,并重新提交该语句。
sqlcode:-373 sqlstate:42623 |
SQL0374N |
在 LANGUAGE SQL 函数 function-name 的 CREATE FUNCTION 语句中没有指定 clause 子句,但检查函数体后发现应该指定该子句。 | 以下情况可能是此错误的原因。
如果用 LANGUAGE SQL 定义的函数体可以修改 SQL 数据,或者它调用可以修改 SQL 数据的函数或过程,那么必须指定 MODIFIES SQL DATA。 如果用 LANGUAGE SQL 定义的函数体包含子查询,或者它调用可以读取 sql 数据的函数,那么必须指定 READS SQL DATA。 无法处理该语句。 |
指定子句或更改函数体。
sqlcode:-374 sqlstate:428C2 |
SQL0385W |
对 SQL 例程中 SQLSTATE 或 SQLCODE 变量的赋值可能会被覆盖,不会激活任何处理程序。 | SQL 例程至少包括一个向 SQLSTATE 或 SQLCODE 特殊变量赋值的语句。 这些变量是通过处理 SQL 例程中的 SQL 语句来赋值的。 因此,所赋的值可能会因 SQL 语句处理而被覆盖。 另外,向 SQLSTATE 特殊变量赋值时不激活任何处理程序。
成功处理了例程定义。 |
不需要执行任何操作。 移除对 SQLSTATE 或 SQLCODE 特殊变量的任何赋值以防止发生警告。
sqlcode:+385 sqlstate:01643 |
SQL0388N |
在函数 函数名 中的 CREATE CAST 语句中,源 源数据类型名 和目标 目标数据类型名 都是内置类型,或它们都是同一类型。 | 其中一种数据类型必须是用户定义的类型。 源类型和目标类型不能是相同的数据类型。
无法处理该语句。 |
更改源或目标的数据类型。
sqlcode:-388 sqlstate:428DF |
SQL0389N |
在 CREATE CAST 语句中标识的特定函数实例 特定名称 具有多个参数、具有与源数据类型不匹配的参数,或返回与目标不匹配的数据类型。 |
强制类型转换函数必须
无法处理该语句。 |
选择不同的函数实例,更改源数据类型,或更改目标数据类型。
sqlcode:-389 sqlstate:428DG |
SQL0390N |
未处理语句,因为函数 函数名 已解析为特定函数 特定名称,此函数在使用它的上下文中无效。 | 如果运行时标记 特定名称 是空字符串,那么该函数解析为由运行时标记 函数名 标识的内置函数。
可能会在许多情况下返回此消息。 下面简要列示了一些可能会返回此消息的情况:
|
通过执行下列其中一个或多个故障诊断步骤,对此错误作出响应:
sqlcode:-390 sqlstate:42887 |
SQL0391N |
使用基于行的函数 函数名 无效。 |
该语句使用基于行的函数 函数名,由于下列其中一种原因而不能使用该函数:
无法处理该语句。 |
从不允许 函数名 的上下文中移除该函数。
sqlcode:-391 sqlstate:42881 |
SQL0392N |
为游标 游标 提供的 SQLDA 已从先前的访存中进行了更改。 | 该应用程序正遵循 DB2 规则 运行,并已请求将 LOB 数据作为一个 FETCH 语句中的 LOB,并作为另一 FETCH 语句中的定位器。 这是不允许的。 | 无法执行该语句。
要么不使用 DB2 规则,要么更改应用程序以在连续访存之间的 SQLDA 中不将数据类型代码从 LOB 更改为定位器(或相反情况)。 sqlcode:-392 sqlstate:42855 |
SQL0396N |
在最终调用处理期间,对象类型 对象名(特定名称 特定名称)尝试执行 SQL 语句。 | 在 FINAL CALL(调用类型 = 255)处理期间,例程 对象名(特定名称 特定名称)尝试执行 SQL 语句(而不是 CLOSE 游标)。 这是不允许的。 | 更改例程以在 FINAL CALL(调用类型 = 255)处理期间不发出 SQL 语句。
sqlcode:-396 sqlstate:38505 |
SQL0401N |
运算 运算符 的操作数的数据类型不兼容或者不可比较。 | 由于下列其中一种原因,不能处理使用 运算符 的操作:
联合系统用户:此数据类型违例可发生在数据源或联合服务器上。 某些数据源未向 运算符 提供适当的值。 在这些情况下,消息标记将具有以下格式:“<data-source>:UNKNOWN”,指示指定数据源的实际值未知。 无法处理该语句。 |
检查所有操作数的数据类型以确保其与语句的用法可比较及兼容。
如果所有 SQL 语句操作数都正确并正在访问视图,那么检查所有视图操作数的数据类型。 在 Hadoop 表中:
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据类型限制。 sqlcode:-401 sqlstate:42818 |
SQL0402N |
算术函数或运算 运算符 的操作数的数据类型无效。 | 对算术函数或运算符 运算符 指定了无效操作数。
无法处理该语句。 |
更正 SQL 语句语法,使所指定的所有函数或运算符操作数都有效。
有效操作数是数字,或者能够隐式地强制类型转换为数字数据类型。 联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查应用于该数据源的运算符。 sqlcode:-402 sqlstate:42819 |
SQL0403W |
新定义的别名 名称 解析为当前未定义的对象 名称-2。 | 已定义了别名 <name>:
对象 <name2> 是未定义的对象。 此对象必须在任一 SQL 语句(除 CREATE ALIAS 外)可以成功地使用新创建的别名之前存在。 已创建指定的别名 <name>。 为了创建别名,一个不可用视图被认为是未定义的。 |
确保在 SQL 语句中使用新创建的别名(除了 CREATE ALIAS)之前定义了未定义的对象 <name2>。
sqlcode: +403 sqlstate:01522 |
SQL0404N |
UPDATE 或 INSERT 语句中的字符串对列 名称 而言太长。 | INSERT 或 UPDATE 语句指定了一个长于可存储在指示列中的最大长度字符串的值。
无法处理该语句。 注意: name 在 SQLCA 中可能返回,也可能不返回,这取决于 INSERT 或 UPDATE 语句的语法。
|
检查对象列的长度,更正程序或 SQL 语句,以使插入或更新字符串不超出最大长度。
sqlcode:-404 sqlstate:22001 |
SQL0405N |
数字文字 文字 无效,因为其值超出范围。 | 指定的数字文字不在可接受的范围内。
SQL 值的正确范围如下所示:
在特定上下文中,文字可能有导致此错误的进一步限制。 联合系统用户:此范围违例可发生在数据源或联合服务器上。 位于数据源表中的 SQL 值的正确范围取决于该数据源。 要确定正确的范围,请参阅该数据源的适当文档。 某些数据源未向 文字 提供适当的值。 在这些情况下,消息标记将具有以下格式:“<data source>:UNKNOWN”,指示指定数据源的实际值未知。 范围集群表:范围定义的结束值小于起始值。 无法处理该语句。 |
将文字值减至适当的大小。
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据范围限制。 范围集群表:确保范围定义中的结束值大于起始值。 sqlcode:-405 sqlstate:42820 |
SQL0406N |
在 UPDATE 或 INSERT 语句中的数值不在它的目标列范围内。 | 主机变量的值或在处理 UPDATE 或 INSERT SQL 语句期间计算出的值在目标列范围之外。 此问题可能由对象列中出现的值、对这些值执行的 SQL 操作,或以上两者导致的。
无法处理该语句。 |
有关除数字浮点之外的数字数据类型的允许范围,请参阅 SQL0405 消息的说明。
这些是对正常的十进制浮点数的限制。 有效的十进制浮点值包括 INFINITY、-INFINITY、NAN、-NAN、SNAN 和 -SNAN 这些特殊值。 但这些特殊值对于所有其他 DB2 数字类型都是非法的。 注意:对于系统目录更新,请参阅 SQL Reference 以了解可更新目录的各种列中的有效范围。 sqlcode:-406 sqlstate:22003 |
SQL0407N |
不允许对 NOT NULL 列 名称 赋予空值。 | 发生了下列情况之一:
如果 名称 的值的格式为“TBSPACEID=n1, TABLEID=n2, COLNO=n3”,那么在发生错误时,SQL 语句的列名不可用。 所提供的值标识不允许空值的基本表的表空间、表和列号。 联合系统用户:联合服务器或数据源可以检测到此情况。 某些数据源未向 名称 提供适当的值。 在这些情况下,消息标记将具有以下格式:“<data source>:UNKNOWN”,指示指定数据源的实际值未知。 HBase 或 Hadoop 用户:如果正在读取底层的 Hadoop 或 HBase 数据,并且发生下列其中一种情况,那么会发生此情况:
可以采用模式名.表名.列名的形式来指定 名称 的值。 无法处理该语句。 在某些情况下,标记 名称 可能不填充(SQLCA 的 sqlerrmc 字段不填充)。 |
检查对象表定义以确定该表的哪些列有 NOT NULL 属性且没有 WITH DEFAULT 属性后,更正该 SQL 语句。
名称 的值的格式为“TBSPACEID=n1, TABLEID=n2, COLNO=n3”,那么可以使用下列查询来确定表名和列名: 此查询所标识的表和列可能是其 SQL 语句失败了的视图的基本表。 如果 ALTER TABLE 语句返回了错误,那么在将某列设置为 NOT NULL 时修改包含空值的列的任何行数据,然后再次尝试运行该语句。 联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的对象定义。 切记:不同数据源之间的缺省值(NULL 和 NOT NULL)不必相同。 对于 HBase 或 Hadoop 用户,验证底层数据文件中的数据是否正确,或者使用 ALTER TABLE 来更改列的可空性。 sqlcode:-407 sqlstate:23502 |
SQL0408N |
值与其赋值目标的数据类型不兼容。 目标名为 名称。 | 由 SQL 语句赋给列、参数、SQL 变量或转换变量的值的数据类型与赋值目标的已声明数据类型不兼容。
对于 Hadoop 表:
无法处理该语句。 |
检查语句和可能的目标表或视图以确定目标数据类型。 确保所赋予的变量、表达式或文字值具有正确的赋值目标数据类型。
对于用户定义的结构化类型,还应将该语句的变换组中定义的 TO SQL 变换函数的参数视作赋值目标。 sqlcode:-408 sqlstate:42821 |
SQL0409N |
COUNT 函数的操作数无效。 | 如在 SQL 语句中所指定的那样,COUNT 函数的操作数不符合 SQL 语法的规则。 仅允许 COUNT(*) 和 COUNT(DISTINCT column)。
无法处理该语句。 |
指定 COUNT(*) 或 COUNT(DISTINCT column)。
注意:此消息仅适用于版本 2 之前的 DB2 版本。 sqlcode:-409 sqlstate:42607 |
SQL0410N |
数值 值 太长。 | 指定的值太长。 浮点字符串的最大长度为 30 个字符。 十进制浮点字符串的最大长度为 42 个字符。
无法处理该语句。 |
缩短指定的文字。
sqlcode:-410 sqlstate:42820 |
SQL0412N |
从仅允许一列的子查询中返回了多列。 | 在 SQL 语句的上下文中,指定全查询只能有一列作为结果。
无法处理该语句。 |
当只允许标量全查询时,只指定一列。
sqlcode:-412 sqlstate:42823 |
SQL0413N |
在数字数据类型转换期间发生溢出。 | 在 SQL 语句处理期间,当从一个数字类型转换到另一个数字类型时发生溢出情况。 根据 SQL 的标准规则执行数字转换。
联合系统用户:联合服务器和/或数据源处可进行数字转换。 无法处理该语句。 未检索、更新或删除数据。 |
检查 SQL 语句的语法,以确定错误原因。 如果问题与数据相关,那么可能需要检查出错时处理的数据。
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据范围限制。 sqlcode:-413 sqlstate:22003 |
SQL0415N |
对应列的数据类型在包括集合运算符的全查询中不兼容,或在 INSERT 或全查询的 VALUES 子句的多行中不兼容。 | 在各种语句处都有可能发生此错误。
当构造函数中所列示的两个值的数据类型不兼容时,数组构造函数中可能就会发生此错误。 有关数据类型兼容性的详细信息,请参阅 SQL Reference 中的“赋值和比较”。 无法处理该语句。 |
更正在 SELECT 语句中使用的列名或 VALUES 子句中的表达式,以使所有对应的列为兼容类型。
sqlcode:-415 sqlstate:42825 |
SQL0416N |
不能在由非 UNION ALL 的集合运算符连接的 SELECT 或 VALUES 语句中指定长于 254 字节的结果列。 | 由一个集合运算符连接的 SELECT 或 VALUES 语句之一指定了一个长于 254 字节的结果列。 长于 254 字节的 VARCHAR 或 VARGRAPHIC 结果列只能配合 UNION ALL 集合运算符使用。
无法处理该语句。 |
或者使用 UNION ALL 运算符代替 UNION,或者从 SELECT 或 VALUES 语句中移除长于 254 字节的结果列。
sqlcode:-416 sqlstate:42907 |
SQL0417N |
要预编译的语句字符串包含作为同一运算符的操作数的参数标记。 |
指定为 PREPARE 或 EXECUTE IMMEDIATE 的对象的语句字符串包含谓词或表达式,在该谓词或表达式中,参数标记已用作没有 CAST 规范的同一运算符的操作数。 例如: 无法处理该语句。 |
不支持此语法。 使用 CAST 规范为至少一个参数标记指定一个数据类型。
sqlcode:-417 sqlstate:42609 |
SQL0418N |
由于此语句包含对下列其中一项内容的无效使用,因此未处理此语句:隐式类型参数标记、DEFAULT 关键字或空值。 | 您在许多场景中都会遇到此消息,并且返回此消息的原因众多。
下面是一些有可能导致返回此消息的原因示例:
|
通过执行以下故障诊断步骤对此错误作出响应:
sqlcode:-418 sqlstate:42610 |
SQL0419N |
十进制除法运算无效,因为结果将有一个负小数位。 | 指定的十进制除法无效,因为它会产生一个负小数位。
内部用于计算十进制除法结果的小数位的公式是: 其中,np 是分子的精度,ns 是分子的小数位,而 ds 是分母的小数位。 联合系统用户:联合服务器和/或数据源处可执行十进制除法。 指定的十进制除法生成对该数据源无效的小数位。 无法处理该语句。 |
检查并确保可能参与十进制除法的所有列的精度和小数位。 注意:在此计算中,可将整数或小整数值转换为小数。
联合系统用户:如果原因未知,那么找出导致请求失败的数据源中的问题,并检查该数据源的数据范围限制。 sqlcode:-419 sqlstate:42911 |
SQL0420N |
在函数 函数名 的字符串自变量中找到无效字符。 | 函数 函数名 的字符串自变量包含在数字 SQL 常量中无效的字符。 由于使用 CAST 规范并将 函数名 作为目标数据类型,或者将一个自变量隐式强制类型转换为数字数据类型而调用了此函数。 用于 SQL 语句中的函数或数据类型可能是 函数名 的同义词。
如果十进制字符在 DECIMAL 函数中指定,那么其为必须用作缺省十进制字符的字符。 |
确保正转换为数字类型的字符串仅包含在数字 SQL 常量中有效的字符,如果指定,使用十进制的字符。
sqlcode:-420 sqlstate:22018 |
SQL0421N |
集合运算符或 VALUES 子句的操作数没有相同列数。 | 集合运算符(诸如 UNION、EXCEPT 或 INTERSECT)的操作数必须有相同的列数。 VALUES 子句中的行必须有相同的列数。
无法处理该语句。 |
更改 SQL 语句,使每个操作数或 VALUES 子句中的每行有完全相同的列数。
sqlcode:-421 sqlstate:42826 |
SQL0423N |
定位器变量 变量位置 当前不表示任何值。 | 定位器变量出错。 未对其指定有效结果集定位器或 LOB 定位器变量值,已释放与该变量相关联的定位器,或者已关闭结果集游标。
如果提供 变量位置,那么它给出出错变量在指定的变量集中的序数位置。 根据检测到错误的时间的不同,数据库管理器可能无法确定 变量位置。 与序数位置不同,变量位置 可能具有值“函数名 RETURNS”,这表示从函数名标识的用户定义的函数中返回的定位器值出错。 |
请更正程序或例程以使在 SQL 语句中使用的定位器变量在执行该语句之前具有有效值。
可以通过 SELECT INTO 语句、VALUES INTO 语句或 FETCH 语句将 LOB 值赋给定位器变量。 ASSOCIATE LOCATORS 语句返回结果集定位器值。 结果集定位器值仅在基本 SQL 游标打开时有效。 如果运行了落实或回滚操作,那么与游标相关联的结果集定位器就不再有效。 如果这是 WITH RETURN 游标,那么确保在尝试分配它之前,打开该游标。 如果应用程序代码满足下列所有情况:
请执行下列其中一项操作来移除导致此警告情况的因素,以便成功地对应用程序进行升级:
sqlcode:-423 sqlstate:0F001 |
SQL0426N |
对于应用程序执行环境而言,动态落实无效。 | 在 CONNECT TYPE 2 环境或诸如 CICS 的“分布式事务处理”(DTP) 环境中执行的应用程序,尝试执行 SQL 动态 COMMIT 语句。 SQL 动态 COMMIT 语句不可在此环境中执行。
联合系统用户:在传递会话中,不能执行 SQL 动态 COMMIT 语句。 |
联合系统用户:注释掉 COMMIT 语句,或将它编码为静态语句。 然后重新提交您的程序。 sqlcode:-426 sqlstate:2D528 |
SQL0427N |
对于应用程序执行环境,动态回滚无效。 | 在 CONNECT TYPE 2 环境或诸如 CICS 的“分布式事务处理”(DTP) 环境中执行的应用程序,尝试执行 SQL 动态 ROLLBACK 语句。 SQL 动态 ROLLBACK 语句不可在此环境中执行。
联合系统用户:在传递会话中,不能执行 SQL 动态 ROLLBACK 语句。 |
联合系统用户:注释掉 ROLLBACK 语句,或将它编码为静态语句。 然后重新提交您的程序。 sqlcode:-427 sqlstate:2D529 |
SQL0428N |
只允许将该 SQL 语句作为工作单元的第一条语句。 | 所发出的 SQL 语句需要在启动工作单元的其他任何 SQL 语句之前执行。 以下是各种可能的情况:
请注意,当语句是 DISCONNECT ALL 时,它将导致对所有连接都执行 DISCONNECT,因此,如果有任何连接违反前面描述的限制,请求都将失败。 |
在处理 SQL 语句之前,发出 COMMIT 或 ROLLBACK。 如果有任何 WITH HOLD 游标,那么将需要将其关闭。 如果语句是 SET INTEGRITY,那么移除 COMMIT THRESHOLD 子句。
sqlcode:-428 sqlstate:25001 |
SQL0429N |
已超过并发 LOB 定位器的最大数目。 | DB2 支持每个工作单元的并发 LOB 定位器的最大数目为 4,000,000。 | 修改程序,以便它需要较少的并发 LOB 定位器,然后再次运行该程序。 例如,一旦应用程序不再需要 LOB 定位器,就使用 FREE LOCATOR 语句将它们释放。
sqlcode:-429 sqlstate:54028 |
SQL0430N |
用户定义的函数 函数名(特定名称 特定名称)已异常终止。 | 当指定的 UDF 在控制之中时,发生了异常终止。 | 需要修正 UDF。 与 UDF 的程序设计者或数据库管理员联系。 在修正 UDF 之前,不应使用。
sqlcode:-430 sqlstate:38503 |
SQL0431N |
用户已经中断用户定义的例程、触发器或匿名块。 对象名:对象名。 特定于对象的名称:特定名称。 对象类型:对象类型。 | 当例程、触发器或匿名块在控制之中时,发生了用户中断或客户机中断。
匿名块没有对象名或特定名称,并被标识为一个对象类型“BEGIN…END”。 遇到此消息可能指示逻辑中存在一些问题,例如无限循环或等待。 |
如果问题仍存在(即,中断的需要会导致相同的错误情况),请与例程、触发器或匿名块的程序设计者或者您的数据库管理员联系。
sqlcode:-431 sqlstate:38504 |
SQL0432N |
参数标记或空值不能具有用户定义的类型名或引用目标类型名 用户定义的类型名。 | 已确定语句中的隐式类型表达式(参数标记或空值)具有用户定义的类型 用户定义的类型名 或具有带目标类型 用户定义的类型名 的引用类型,该类型与使用参数标记的上下文有关。 除非隐式类型表达式是赋值的一部分(INSERT 的 VALUES 子句或 UPDATE 的 SET 子句),或使用 CAST 规范显式地将它强制类型转换为用户定义的单值数据类型或引用数据类型,否则隐式类型表达式不能将用户定义的类型或引用类型作为其数据类型。
无法处理该语句。 |
将隐式类型表达式显式强制类型转换为用户定义的单值数据类型或引用数据类型。 备用方法是将采用用户定义的单值数据类型的列强制类型转换为其相应的源数据类型,或者将采用引用数据类型的列强制类型转换为其相应的表示法类型。
sqlcode:-432 sqlstate:42841 |
SQL0433N |
值 值 太长。 | 值 值 要求被系统(内置)强制类型转换函数或调整函数截断,调用强制类型转换函数或调整函数的目的是以某种方式变换值。 在使用此值处不允许截断。
正在变换的值是下列其中一项:
无法处理该语句。 |
如果 值 是 SQL 语句中的文字串,那么对于其计划的使用而言太长。
如果 值 不是文字串,那么检查 SQL 语句以确定变换在何处发生。 变换的输入太长或目标太短。 更正问题并重新运行该语句。 sqlcode:-433 sqlstate:22001 |
SQL0434W |
已将子句 子句 的不受支持的值替换为值 值。 | 不支持为子句 子句 指定的值,并已使用标识的支持值 值 将其替换。 | 如果所选值可接受,那么不需要更改。 否则,指定对 子句 有效的值。
sqlcode:+434 sqlstate:01608 |
SQL0435N |
指定了无效的应用程序定义的 SQLSTATE sqlstate。 | 由 RAISE_ERROR 函数或在 SIGNAL 或 RESIGNAL 语句上指定的 SQLSTATE 值不符合应用程序定义的 SQLSTATE 的规则。 | 更正 SQLSTATE 的指定值。 SQLSTATE 值必须是刚好包含 5 个字符的字符串。 它必须是长度定义为 5 的 CHAR 类型,或者是长度定义为 5 或更长的 VARCHAR 类型。 SQLSTATE 值必须遵循应用程序定义的 SQLSTATE 的规则。
以下是用于在 SIGNAL 或 RESIGNAL 语句上指定的 SQLSTATE 值的规则。
以下是用于 RAISE_ERROR 函数指定的 SQLSTATE 值的规则
sqlcode:-435 sqlstate:428B3 |
SQL0436N |
C 语言以 NULL 结束的字符串主机变量中丢失终止 NULL 字符。 | C 编程语言中输入主机变量代码的值要求在字符串末尾有 NULL 终止符。
无法处理该语句。 |
确保输入主机变量的值是以 NULL 终止符结束的。
sqlcode:-436 sqlstate:22024 |
SQL0437W |
此复杂查询的性能可能是次优的。 原因码:原因码。 | 查询优化是其中一个影响应用程序性能的因素。 SQL 和 XQuery 编译器执行多个步骤以生成可以执行的存取方案。
通常,当复杂查询所需要的资源却得不到时,或者当遇到了优化边界条件时,将会返回此消息。 原因码更详细地说明了性能可能为次优性能的原因:
将处理该语句。 |
如果查询的性能未达到最优,请执行下列其中一项或多项操作:
sqlcode:+437 sqlstate:01602 |
SQL0438N |
应用程序发生错误或警告,其诊断文本为:文本。 | 在触发器中执行 RAISE_ERROR 函数或者 SIGNAL SQLSTATE 语句的结果是出现此错误或警告。 以“01”或“02”开始的 SQLSTATE 值指示出现警告的情况。 | 请参阅应用程序文档。
sqlcode:-438, +438 sqlstate:由应用程序定义 |
SQL0439N |
用户定义的函数 function-name 被函数 source-function 间接实现,导致错误 sqlcode 。 | 在用户语句中引用了函数 函数名。 但是,因为 SOURCE 子句在此函数的定义中使用,结果是函数 源函数 实际上实现该函数。 (这可能是从 函数名 到 源函数 的直接或间接定义路径。) 在编译时,源函数 的封装器(代表函数执行的 DB2 代码)已返回由 sqlcode 标识的错误。 | 实际错误情况需要在可执行更正操作前更好地了解。 查阅 sqlcode 的解释。 如果 源函数 是内置函数,那么 sqlcode 应指示问题,就像在用户语句中直接引用内置函数时的情形一样。 如果 源函数 是用户定义的函数,那么该消息最可能指示一个自变量的问题或函数结果的问题。
更正问题,然后重试。 sqlcode:-439 sqlstate:428A0 |
SQL0440N |
未找到参数兼容的 routine-name 类型为 routine-type 的授权例程。 | 当数据库管理器找不到可用来实现引用的例程时,如果引用例程 例程名,那么会发生此错误。 引起此错误的原因有下列几个:
|
修正问题,然后再次尝试。 这可能涉及目录访问、更改语句、授予对例程调用程序的执行特权、新函数的添加和/或 SQL 路径的更改。
sqlcode:-440 sqlstate:42884 |
SQL0441N |
对函数 函数名 使用关键字 DISTINCT 或 ALL 无效。 |
有几种可能的原因。
|
更正错误,然后再次尝试。 sqlcode:-441 sqlstate:42601 |
SQL0442N |
在引用例程 例程名 时出错。 超过了允许的最大自变量数(90)。 | 在对例程 例程名 的引用中指定了太多的自变量。 最大允许值为 90。 | 通过确保使用了正确的自变量数目更正语句,然后再次尝试。
sqlcode:-442 sqlstate:54023 |
SQL0443N |
例程 例程名称(特定名称 特定名称)返回错误 SQLSTATE,且诊断文本为 文本。 | 如果内置例程或者用户定义的例程(过程、函数或方法)失败,那么会返回此消息。
第三个运行时标记的内容 文本 在不同情况下会有所不同:
|
通过下列其中一种方式对此错误作出响应:
|
SQL0444N |
例程 例程名称(特定名称 特定名称)是用库或路径 库或路径,不能访问的函数 函数代码标识 中的代码实现的。 原因码:code。 | 数据库管理器尝试访问实现例程 例程名称(特定名称 特定名称)的代码的主体,但由于原因码 代码(代码列示如下)所给出的原因,不能访问该代码主体。 实现该例程的文件是由 库或路径 标识的,而函数是由 函数代码标识 标识的。
由于对可用的最大标记长度具有限制,因此,库名、路径名或者函数名可能会被截断。 可以使用以下查询从系统目录视图中获取完整的库路径和函数名:
联合系统用户:如果此用户定义的函数是函数模板(因此无需将代码保留在联合服务器上),那么考虑修改 SQL 语句或统计信息以便在远程数据源上对此函数求值。 |
对每个原因码给出:
联合系统用户:如果此用户定义的函数是函数模板(且因此无需代码驻留在联合服务器上),那么可能要考虑修改 SQL 语句或统计信息以便在远程数据源上对此函数求值。 sqlcode:-444 sqlstate:42724 |
SQL0445W |
值 值 已被截断。 | 当系统(内置)强制类型转换函数、调整函数或代码页转换函数以某种方式变换值 值 时,该值被截断。 这是警告情况。
正在变换的值可以时下列其中一项:
|
确保输出是期望的输出并且截断未产生任何意外的结果。
sqlcode:+445 sqlstate:01004 |
SQL0447W |
语句包含涉及子句 子句 的冗余规范。 | 语句中多次包括 子句 关键字。 这是一个警告条件。 | 如果是有意造成冗余,或者如果可以确定其不会有有害结果,那么不需要任何响应。 所谓“有害”类型指的是可包括,例如,某些其他期望关键字的省略。
sqlcode:+447 sqlstate:01589 |
SQL0448N |
定义例程 例程名 时出错。 已超过允许的最大参数个数(对于用户定义的函数和方法为 90 个,对于存储过程为 32767 个)。 | 定义例程 例程名 时指定了太多的参数。 例程定义语句可以是 CREATE FUNCTION、CREATE PROCEDURE、CREATE TYPE(方法定义)、或 ALTER TYPE(方法定义)。 | 更改该语句以包括较少的参数。
sqlcode:-448 sqlstate:54023 |
SQL0449N |
定义例程 例程名 的语句在 EXTERNAL NAME 子句中包含无效格式化的库/函数标识。 | 在用户定义的函数 (UDF)、用户定义的方法或过程 例程名 的 CREATE 语句的 EXTERNAL NAME 子句中发现错误。 库/函数标识遵循以下规则:
对于 LANGUAGE C,名称采用格式“<a>”或“<a>!<b>”,如下所示:
对于 LANGUAGE OLE,名称采用格式“<a>!<b>”,如下所示:
对于 LANGUAGE JAVA 和 LANGUAGE CLR,名称采用格式“<a>:<b>!<c>”,如下所示:
对于所有语言,在单引号、对象标识符或分隔字符之间不允许有前导或末尾的空白字符(例如,“<a> ! <b>”无效)。 但是,如果平台允许,路径和文件名可以包含空格。 对于所有文件名,都可以通过使用名称的简短格式(示例:math.a(在 UNIX 上)和 math.dll(在 Windows 上))或标准路径名(示例:/u/slick/udfs/math.a(在 UNIX 上)和 d:\udfs\math.dll(在 Windows 上))来指定文件。 如果使用文件名的简短格式,那么该文件必须位于如下所示的位置:
文件扩展名(示例:.a (在 UNIX 上)和 .dll(在 Windows 上))应始终包括在文件名中。 |
更正问题,然后重试。 一个可能的原因是包含空白,或具有“!” 或“:”在名称的开头或结尾。
sqlcode:-449 sqlstate:42878 |
SQL0450N |
例程 例程名(特定名称 特定名称)生成了太长的结果值、SQLSTATE 值、消息正文或暂存区。 |
在从例程 例程名 (特定名称 特定名称)返回时,数据库管理器检测到返回的字节数多于分配给下列其中一项的字节数:
这是不允许的。 如果例程改变了暂存区的长度字段,那么也将返回此错误。 |
咨询数据库管理员,或例程的程序设计者。
sqlcode:-450 sqlstate:39501 |
SQL0451N |
在定义例程 routine-name 的语句中,数据项 定义包含一个数据类型 类型,该数据类型不适合用给定语言编写的非源代码例程或定义为自主例程。 | 在定义例程 例程名 的语句的 数据项 部分中产生了错误。 用户的语句包含了无效的类型 类型,或者包含了基于无效类型 类型 的用户定义的类型(UDT)。 例程定义可以是 CREATE FUNCTION、CREATE PROCEDURE、CREATE TYPE(方法定义)、或 ALTER TYPE(方法定义)。
数据项 是在语句中标识问题区的标记。 例如,“PARAMETER 2”或“RETURNS”或“CAST FROM”。 在自主事务中,可以落实该事务中的语句块,即使该事务被回滚亦如此。 您可以通过在 CREATE PROCEDURE 命令中使用 AUTONOMOUS 关键字来创建过程,该过程将落实它的工作,即使从被回滚的工作单元中调用该过程亦如此。 |
确定发生了何种情况并执行更正操作。 可能的更正操作包括:
sqlcode:-451 sqlstate:42815 |
SQL0452N |
不能访问主变量 变量位置 引用的文件。 原因码:原因码。 |
尝试访问或访问“第 n 个”主变量引用的文件时遇到错误,其中 n = variable-position,原因是 reason-code 给出的原因。如果无法确定主机变量位置,那么 <variable-position> 设置为 0。 可能的原因码如下所示:
|
对于原因码 01,更正文件名长度、文件名和/或路径。 对于原因码 02,指定有效的文件选项。 对于原因码 03,确保在尝试访问文件前指定的文件已存在。 对于原因码 04,如果文件不再是必需的,那么删除该文件,或指定当前不存在的文件名。 对于原因码 05,确保用户具有对文件的访问权(更正文件许可权)。 对于原因码 06,使用另一文件,或者,如果一定要访问该文件,可修改应用程序来确保文件不会被并发访问。 对于原因码 07,删除不必要的文件以释放磁盘空间,或者指定驻留在另一具有足够磁盘空间的驱动器/文件系统上的文件。 同时,确保未达到操作系统或用户文件大小限制。 如果应用程序代码页使用多字节编码方案,那么有可能只写入了最后一个字符的一部分,因此,确保文件仅包含全型的字符。 对于原因码 08,如果文件要用于输入,那么确保在文件全部读入以前不要对其进行修改。 对于原因码 09,更正文件所在的介质上的所有错误。 对于原因码 10,确保文件包含基于应用程序代码页的有效多字节字符,或者在与文件的内容相同的代码页下运行时提交请求。 对于原因码 11,确保已安装了文件的代码页(例如日文 EUC)和应用程序的图形代码页(例如 UCS-2)之间的字符转换支持。 sqlcode:-452 sqlstate:428A1 |
SQL0453N |
在定义例程 例程名 的语句中的 RETURNS 子句发现有问题。 | 已标识对例程 例程名 的结果进行强制类型转换的问题。 CAST FROM 数据类型不能强制类型转换成 RETURN 数据类型,而应该是此类型。 请参阅 SQL Reference 以了解有关在数据类型之间进行强制类型转换的详细信息。 | 更改 RETURNS 或者 CAST FROM 子句,以使 CAST FROM 数据类型可强制类型转换成 RETURN 数据类型。
sqlcode:-453 sqlstate:42880 |
SQL0454N |
例程 例程名称 的定义中提供的特征符与另外某个例程的特征符相匹配。 | 函数的特征符由函数名、为函数定义的参数数目和一个有序参数类型列表组成。
方法的特征符由方法名、方法的主题类型、对方法定义的参数数目以及有序的参数类型列表组成。 过程的特征符由过程名称及为该过程定义的参数数目(不考虑数据类型)组成。 在下列情况下可能会出现此状况:
无法处理该语句。 |
确定现有例程是否已经提供了期望的功能。 如果未提供,那么必需更改该例程的特征符; 例如,通过更改例程名称来进行更改。
如果您正在更改模块以便对某个已定义的例程原型添加例程主体,请检查特征符是否匹配或者是否还需要更改特征符,并确保例程名称和特定名称与已定义的例程原型的那些名称匹配。 如果需要更改现有模块例程的例程主体,请更改模块以删除该例程,然后更改模块以重新创建该例程并指定新的例程主体。 sqlcode:-454 sqlstate:42723 |
SQL0455N |
在例程 例程名中,为 SPECIFIC 名提供的模式名 模式名-1 与例程的模式名 模式名-2 不匹配。 | 如果 SPECIFIC 名被指定为一个有着两部分的名称,那么 模式名-1 部分必须与 例程名 的 模式名-2 部分相同。 注意,例程名 的 模式名-2 部分 可能已直接指定,或者可能已将它缺省为语句的授权标识。 如果例程是一种方法,那么 模式名 是指该方法的主题类型的模式名。 | 更正语句,然后再次尝试。
sqlcode:-455 sqlstate:42882 |
SQL0456N |
在例程 例程名 的定义中,SPECIFIC 名称 特定名称 已存在于模式或模块中。 | 用户已在例程 例程名 的定义中提供显式的 SPECIFIC 名称 特定名称,但是此名称已是模式或模块中某个函数、方法或过程的 SPECIFIC 名称。 | 选择新的 SPECIFIC 名称,然后再次尝试。
sqlcode:-456 sqlstate:42710 |
SQL0457N |
函数、方法、用户定义的数据类型或结构化数据类型属性不能称为 名称,因为它是保留给系统使用的。 |
因为指定的名称是保留给系统使用的,所以不能创建用户定义的函数、方法、用户定义的数据类型或结构化数据类型。 不能用作函数名、单值类型名、结构化类型名或属性名的名称包括: |
为不是保留供系统使用的函数、方法、用户定义的数据类型或结构化数据类型属性选择名称。
sqlcode:-457 sqlstate:42939 |
SQL0458N |
在按特征符来引用例程 例程名称 时,找不到匹配的例程。 | 在按特征符来引用函数、方法或存储过程 例程名称 时,找不到匹配的函数、方法或存储过程。
如果所使用的数据类型可以接受参数,那么类型参数是可选的。 例如,对于 CHAR(12),可以指定参数 (CHAR(12)) 或省略它 (CHAR())。如果您指定了该参数,那么 DBMS 将仅接受数据类型和数据类型参数的精确匹配。 如果省略了该参数,那么 DBMS 将只接受数据类型的匹配。 CHAR() 语法提供了一种方法来告诉 DBMS 在查找匹配函数时忽略数据类型参数。 还要注意,在 DROP FUNCTION/PROCEDURE、COMMENT ON FUNCTION/PROCEDURE 和 TRANSFER OWNERSHIP FUNCTION/PROCEDURE/METHOD 语句中,非限定引用是用语句授权标识限定的,这是可找到问题的模式。 在 CREATE 函数的 SOURCE 子句中,限定来自于当前路径。 在此情况下,在整个路径中没有匹配的函数。 函数不能以 COALESCE、DBPARTITIONNUM、GREATEST、HASHEDVALUE、LEAST、MAX (scalar)、MIN (scalar)、NULLIF、NVL、RID、RAISE_ERROR、TYPE_ID、TYPE_NAME、TYPE_SCHEMA 或 VALUE 内置函数作为源函数。 无法处理该语句。 |
可能的响应包括:
sqlcode:-458 sqlstate:42883 |
SQL0461N |
不能将数据类型为 源数据类型 的值 CAST 为类型 目标数据类型。 | 语句包含 CAST,其第一个操作数具有数据类型 源数据类型,它将要强制类型转换为数据类型 目标数据类型。 不支持此强制类型转换。 | 更改源或目标的数据类型,以使强制类型转换受支持。 对于预定义数据类型,这些内容已在 SQL Reference 中归档。 对于涉及用户定义的单值类型的强制类型转换,强制类型转换可在基本数据类型与用户定义的单值类型之间进行,或者从可提升为基本数据类型的数据类型强制类型转换到用户定义的单值类型。
sqlcode:-461 sqlstate:42846 |
SQL0462W |
命令或例程 命令或例程名称(特定名称 特定名称)返回了警告 SQLSTATE,其诊断文本为 文本。 | 格式为 01Hxx 的 SQLSTATE 与消息正文 正文 一起由命令或例程 命令或例程名称(特定名称 特定名称)返回给 DB2。 如果 命令或例程名称 是一个命令,那么 特定名称 将包含值“*N”。 | 用户需要理解警告的含意。 咨询数据库管理员,或例程的程序设计者。
sqlcode: +462 sqlstate:由用户定义的函数、外部过程 CALL 或者命令调用返回的有效警告 SQLSTATE。 |
SQL0463N |
例程 例程名(特定名称 特定名称)返回一个无效 SQLSTATE 状态,其诊断文本为 文本。 | 例程可以返回的有效 SQLSTATE 是 38xxx(错误)、38502(错误)和 01Hxx(警告)。 此例程 例程名(特定名称 特定名称)返回一个无效 SQLSTATE 状态,以及消息正文 正文。 该例程存在错误。 | 将需要更正该例程。 咨询数据库管理员,或例程的程序设计者。 还可向例程的程序设计者了解错误 SQLSTATE 的应用程序意义。
sqlcode:-463 sqlstate:39001 |
SQL0464W |
过程 过程名称 返回 生成的-nbr-结果 个查询结果集,它超出定义的限制 最大-nbr-结果。 | 正常完成了由 过程名称 命名的存储过程。 但是,存储过程超出了该过程可返回的查询结果集数目上的定义限制。
只有第一个 最大-nbr-结果 查询结果集返回到发出 SQL CALL 语句的 SQL 程序中。 可能的原因如下所示:
|
SQL 语句成功。 将 SQLWARN9 字段设置为“Z”。
sqlcode:+464 sqlstate:0100E |
SQL0465N |
无法启动、初始化受防护方式的进程,也不能与它进行通信。 原因码: code。 | 存在与系统有关的问题,它涉及到受防护方式例程(用户定义的函数或方法)的运行。 问题的确切性质由 代码 指示。 这不是用户问题。 可能的原因码是:
例程进程错误
代理进程错误
|
与数据库管理员或系统管理员联系。
sqlcode:-465 sqlstate:58032 |
SQL0466W |
过程 过程名称 从存储过程返回 结果数目 个结果集。 | 此消息已作为发出 CALL SQL 语句的结果返回。 它指示存储过程 过程名称 有 结果数目 个结果集与它相关联。
该语句成功完成。 |
不需要执行任何操作。
sqlcode:+466 sqlstate:0100C |
SQL0467W |
过程 过程名称 包括另一个结果集。 总共有 最大-nbr-结果 个结果集。 | 此消息作为关闭游标的结果返回。 它指示存储过程 过程名称 存在另一个结果集并且在下一个结果集上重新打开了游标。 存储过程中总共有 最大-nbr-结果 个结果集。
该语句成功完成。 |
不需要执行任何操作。 可以继续对下一个结果集进行访存。
sqlcode:+467 sqlstate:0100D |
SQL0469N |
参数方式 OUT 或 INOUT 对于例程 例程名 中特定名为 特定名 的参数无效(参数号为 编号,名称为 参数名)。 | SQL 过程中的某个参数被声明为 OUT 参数,但相应的自变量不是有效的赋值目标。 (仅限于函数)一个参数被声明为 OUT 或 INOUT 参数,但相应的自变量不是 SQL 变量、全局变量或 SQL 参数。
常量或表达式是 OUT 或 INOUT 参数的无效自变量的示例。 例如,如果将名为 my_function 的函数声明为具有一个 OUT 参数,那么以下函数调用无效,原因是不能对传递给 OUT 参数的自变量进行赋值: SET my_variable = my_function( 1 + 2 ); |
如果正在调用 SQL 过程,请将该输出自变量更改为有效的赋值目标。 如果正在调用函数,请将 OUT 或 INOUT 自变量更改为 SQL 变量、全局变量或 SQL 参数。
sqlcode:-469 sqlstate:42886 |
SQL0470N |
用户定义的例程 例程名(特定名称 特定名称)对于不能传送的自变量 自变量 具有空值。 | 例程具有带有空值的输入自变量,但该空值是用不传递空指示符的参数样式定义的,或此参数的数据类型不支持空值。 | 如果将通过空值调用例程,那么确保参数类型或输入类型能够接受空值。 对于函数,还可用“RETURNS NULL ON NULL INPUT”创建函数。
sqlcode:-470 sqlstate:39004 |
SQL0471N |
调用例程 名称 失败,因为 原因码。 | 对例程 名称 的调用失败。 使用原因码 原因码 来了解有关故障原因的更多详细信息。 |
如果原因码以“DSNX9”开头:
另外,下面列示了要针对所指示的原因码执行的操作:
sqlcode:-471 sqlstate:55023 |
SQL0472N |
函数或方法 例程名(特定名称 特定名称)将一个或多个游标保持为打开。 | 在调用语句完成之前,函数或方法 例程名(特定名称 特定名称)未关闭它的所有打开的游标。 函数和方法必须在调用语句完成前关闭所有游标。 | 咨询函数或方法的开发者。 必须重写函数或方法以确保在调用语句完成之前关闭所有游标。
sqlcode:-472 sqlstate:24517 |
SQL0473N |
无法创建用户定义的数据类型,因为为新数据类型指定的名称与现有内置数据类型的名称相同。 | 当您正在尝试创建与内置数据类型同名的用户定义的数据类型,或者正在尝试对具有这种数据类型的数据库进行升级时,返回此消息。 | 如果要创建新的用户定义的数据类型,请使用非保留的数据类型名称重新发出此语句。
如果要升级的数据库具有与新的产品版本中的内置数据类型同名的用户定义的数据类型,请执行下列步骤:
sqlcode:-473 sqlstate:42918 |
SQL0475N |
SOURCE 函数的结果类型(type-1)无法转换为用户定义函数 函数名 的 RETURNS 类型(type-2)。 | 为了使源用户定义的函数 (UDF) 的 CREATE 有效,源函数的结果类型(类型-1)必须可通过强制类型转换为正在创建函数的 RETURNS 类型(类型-2)。 不支持在这些数据类型之间进行强制类型转换。 请参阅 SQL Reference 以了解有关在数据类型之间进行强制类型转换的详细信息。 | 更改 RETRUNS 数据类型或 SOURCE 函数标识,以使 SOURSE 函数的结果类型可通过强制类型转换为 RETURNS 数据类型。
sqlcode:-475 sqlstate:42866 |
SQL0476N |
在无特征符的情况下引用了例程 函数名,但该例程在其模式中不是唯一的。 | 允许不带特征符的函数或存储过程引用,但指定的函数或存储过程 函数名 在其模式中必须是唯一的,而实际上不是。 如果例程是方法,那么允许不带特征符的引用,但是此指定方法对于数据类型必须是唯一的。
注意,在 DROP FUNCTION/PROCEDURE 和 COMMENT ON FUNCTION/PROCEDURE 语句中,非限定引用是用语句授权标识限定的,这是可找到问题的模式。 在 CREATE 函数的 SOURCE 子句中,限定来自于当前路径。 在此情况下,路径中包含具有此名的函数的第一个模式有同名的其他函数。 联合系统用户:对于传递会话,如果语句为 CREATE FUNCTION MAPPING 语句,那么此错误指示尝试创建从一个远程函数到多个本地函数的函数映射。 |
通过下列其中一项更正引用:
然后,再次尝试。 sqlcode:-476 sqlstate:42725 |
SQL0478N |
由于存在对目标对象的一个或多个依赖关系,因此语句失败。 目标对象类型:对象类型-1。 依赖于目标对象的对象的名称:对象名。 依赖于目标对象的对象的类型:对象类型-2。 | 当对象 B 被认为依赖于对象 A 时,对对象 A 执行的操作可能会显著地影响对象 B。 例如,当您删除表时,任何直接或间接依赖该表的对象都可能被删除或使其不可用。 由于可能会对从属对象产生这些结果,因此存在对作为操作目标的对象的依赖关系时,某些类型的操作将失败。
由于存在直接或间接依赖于目标对象的其他对象而导致尝试针对该目标对象执行删除、更改、移交所有权或撤销特权失败时,将返回此消息。 下面是一些有可能导致返回此消息的场景示例:
|
sqlcode:-478 sqlstate:42893 |
SQL0480N |
尚未调用过程 过程名称。 | 在应用程序进程中尚未调用在 ASSOCIATE LOCATORS 语句中标识的过程,或者虽然调用了该过程,但是在该语句之前发生了显式或隐式落实。 | 更正这些语句,以便使用来在 CALL 语句上指定过程名称的准确语法与在 ASSOCIATE LOCATORS 语句上指定过程名称的语法相同。 如果使用了非限定名来调用(CALL)该过程,那么在其他语句中还必须使用只具单一部分的名称。 重新发出这些语句。
sqlcode:-0480 sqlstate:51030 |
SQL0481N |
GROUP BY 子句包含嵌套在 element-1 中的 element-2 。 |
在 GROUP BY 子句中不允许下列嵌套类型:
其中,GEL 表示在 GROUP BY 子句的语法图中显示为分组表达式列表的元素。 在某些情况下,元素 2 将显示值“—”。 在此情况下,“—”表示 CUBE、ROLLUP、GROUPING SETS 或 GEL 中的一个。 无法处理该语句。 |
修改 GROUP BY 子句以移除嵌套。
sqlcode:-481 sqlstate:428B0 |
SQL0483N |
在用户定义的函数 函数名 语句的 CREATE 中,参数的数目与 SOURCE 函数的参数个数不匹配。 |
正尝试 CREATE 用户定义的函数 函数名,它源于另一个函数。 已经标识了下列情况之一:
|
SOURCE 函数的参数个数与正创建的函数的参数个数必须是相同的。 SOURCE 函数的标识需要更改,以
还可能需要更正路径以便进行正确的函数解析。 sqlcode:-483 sqlstate:42885 |
SQL0486N |
BINARY 和 VARBINARY 数据类型当前仅在内部受支持。 | 语句中的一个或多个数据类型为 BINARY 或 VARBINARY。 当前版本的 DB2 不支持这种情况。 | 更改数据类型,然后重新提交该语句。
sqlcode:-486 sqlstate:42991 |
SQL0487N |
例程 例程名(特定名称 特定名称)尝试执行 SQL 语句。 | 不允许用来实现例程实体的程序执行 SQL 语句。 此例程 例程名称(特定名称 特定名称包含 SQL 语句或此例程调用一个使用 SQL 的过程,例如 SYSPROC.ADMIN_CMD 过程。 | 移除任何 SQL 语句,然后重新编译该程序。 审计所允许的 SQL 的级别,如在定义例程的语句上所指定的那样。
sqlcode:-487 sqlstate:38001 |
SQL0489N |
在 SELECT 或 VALUES 列表项中的函数 函数名 生成了 BOOLEAN 结果。 | 函数 函数名 定义为用作谓词,返回布尔结果。 这样的结果在选择列表中无效。
无法处理该语句。 |
更正函数名或移除函数的使用。
sqlcode:-489 sqlstate:42844 |
SQL0490N |
在 SQL 语句或命令中直接指定的数值 数值 在此上下文(最小值,最大值)中允许值的范围之外。 | 指定了数值(数值),但是该数字在指定它的上下文中是无效的。 此上下文中允许的最小值为 最小值。 此上下文中允许的最大值为 maxval。 n 必须在 minval 和 maxval 所指定的范围内 (minval =< n => maxval)。
如果创建或改变表空间,最小值和最大值可能取决于表空间的页大小。 请参阅 SQL Reference 以了解有关表空间限制的详细信息。 |
将语句或命令中的值 n 更改为有效值。
sqlcode:-490 sqlstate:428B7 |
SQL0491N |
用于定义 例程名 的 CREATE FUNCTION 或 ALTER MODULE 语句必须包含 RETURNS 子句以及下列其中一项:EXTERNAL 子句(带有其他必需关键字)、SQL 函数体或 SOURCE 子句。 | 在例程 例程名 的定义中缺少了必需的子句。 如果指定了 EXTERNAL,那么还必须指定 LANGUAGE 或 PARAMETER STYLE 子句。
如果正在定义 SQL 函数,那么除非正在使用 ALTER MODULE 的 PUBLISH 操作来定义 SQL 函数原型,否则必须包括 SQL 函数体。 |
添加缺少的子句,然后再次尝试。
sqlcode:-491 sqlstate:42601 |
SQL0492N |
用户定义的函数 函数名 的 CREATE 中有问题,参数号为 号码。 可能涉及与 SOURCE 函数不匹配。 | 函数 函数名 的位置 编号 中的参数出错,并且不能执行 CREATE。 源函数位置 编号 中的参数不能通过强制类型转换为正在创建的函数的相应参数。 |
可能的更正包括:
sqlcode:-492 sqlstate:42879 |
SQL0493N |
例程 例程名(特定名称 特定名称)返回了一个在语法或数字上无效的日期、时间或时间戳记值。 | 用户定义的函数 (UDF) 或方法 例程名(特定名称 特定名称)的主体返回了无效日期、时间或时间戳记值。
语法上无效日期值的示例为“1994-12*25”:“*”应为“-”。数字上无效时间值的示例为“11.71.22”:一小时内没有第 71 分钟。 |
需要修正该例程。 咨询 DBA 或例程的程序设计者。
sqlcode:-493 sqlstate:22007 |
SQL0494W |
结果集数大于定位器数。 | 在 ASSOCIATE LOCATORS 语句中指定的结果集定位器数小于存储过程返回的结果集数。 返回了前 “n” 个结果集定位器值,其中 “n” 是 SQL 语句中指定的结果集定位器变量的数。
SQL 语句成功。 SQLWARN3 字段设置为“Z”。 |
增大在 SQL 语句中指定的结果集定位器变量数。
sqlcode:+494 sqlstate:01614 |
SQL0495N |
成本类别 费用类别 中 estimate-amount1 处理器秒数(estimate-amount2 服务单位)的估计处理器成本超过 限额 服务单位的资源限制错误阈值。 |
动态 INSERT、UPDATE、DELETE 或 SELECT SQL 语句的预编译所得出的成本估计值超出了在资源限制规范表(RLST)中指定的错误阈值。 如果成本类别值为“B”,并且在 RLST 的 RLF_CATEGORY_B 列中所指定的缺省操作是返回错误,那么也会返回此错误。
动态 INSERT、UPDATE、DELETE 或 SELECT 语句的预编译未成功。 |
如果因为成本类别值为“B”而返回了此 SQLCODE,那么原因可能是语句正在使用参数标记,或某些统计信息对于所引用的表和列不可用。 请确保管理员已经对所引用的表运行了 RUNSTATS 命令(对于 Db2 表)、NNSTAT 过程(对于昵称)或者 ANALYZE 命令(对于 Hadoop 和 HBase 表)。 还可能是因为执行语句时将调用 UDF,或者对于 INSERT、UPDATE 或 DELETE 语句,对已更改的表定义了触发器。 检查此语句的 DSN_STATEMNT_TABLE 或 IFCID 22 记录,以便找到此 SQL 语句被置于成本类别“B”中的原因。 如果无法更改该程序,或者如果无法获得统计信息,那么请求管理员将 RLST 的 RLF_CATEGORY_B 列中的值更改为“Y”(这允许执行该语句),或者更改为“W”(这将返回警告,而不是返回错误)。
如果警告是由消耗了太多处理器资源的 SQL 语句引起的,那么尝试重写该语句以便更有效地执行该语句。 另一个选择是请求管理员来增大 RLST 中的错误阈值。 sqlcode:-495 sqlstate:57051 |
SQL0499N |
游标 游标名 已分配给过程 过程名称 中的这个或另一个结果集。 | 尝试将游标分配给一个结果集,但已为过程 过程名称 分配多个游标。 | 确定是否先前对游标分配了目标结果集。 如果已为过程 过程名称 分配了多个游标,那么确保仅使用一个游标来处理存储过程的结果集。
sqlcode:-499 sqlstate:24516 |
SQL0501N |
FETCH 语句或 CLOSE 语句中指定的游标尚未打开,或者游标标量函数引用中的游标变量尚未打开。 | 程序尝试执行下列其中一项操作:
无法处理该语句。 |
检查先前的消息 (SQLCODE),它可能关闭了游标。 注意,在关闭游标后,任何访存或关闭游标语句都接收到 SQLCODE -501。
如果未发出任何先前的 SQLCODE,那么更正应用程序,确保游标在执行 FETCH 或 CLOSE 语句时是打开的。 如果在游标标量函数中引用游标变量,请验证该游标是否不为空、已定义并且已打开,否则将该游标变量替换为处于该状态的游标变量。 sqlcode:-501 sqlstate:24501 |
SQL0502N |
在 OPEN 语句中指定的游标已打开。 | 程序已尝试对打开的游标执行 OPEN 语句。
无法处理该语句。 游标未更改。 |
更正应用程序,确保其没有尝试对已打开的游标执行 OPEN 语句。
sqlcode:-502 sqlstate:24502 |
SQL0503N |
不能更新列,因为未在游标的 SELECT 语句的 FOR UPDATE 子句中对其进行标识。 | 程序尝试使用游标更新表列中的值,该列未在游标声明或预编译的 SELECT 语句的 FOR UPDATE 子句中标识。
任何欲更新的列必须在游标声明的 FOR UPDATE 子句中标识。 无法处理该语句。 |
更正应用程序。 如列需要更新,可将其名称添加到游标声明的 FOR UPDATE 子句中。
sqlcode:-503 sqlstate:42912 |
SQL0504N |
游标 名称 未定义。 | 指定了 UPDATE 或 DELETE WHERE CURRENT OF 名称,但游标 名称 未在应用程序中声明。
无法处理该语句。 |
确保应用程序的完整性并更正游标名的拼写错误。
sqlcode:-504 sqlstate:34000 |
SQL0505N |
游标 名称 已定义。 | 已声明 DECLARE 语句中指定的游标名。
无法处理该语句。 |
确保正确拼定名称。 |
SQL0507N |
在 UPDATE 或 DELETE 语句中指定的游标未打开。 | 当指定的游标未打开时,程序尝试执行 UPDATE 或 DELETE WHERE CURRENT OF 游标语句。
无法处理该语句。 未执行任何更新或删除。 |
检查先前的消息 (SQLCODE),它可能关闭了游标。 注意,在关闭游标后,任何访存或关闭游标语句接收到 SQLCODE -501,且任何更新或删除接收到 SQLCODE -507。 更正应用程序的逻辑,确保在执行 UPDATE 或 DELETE 语句时指定的游标打开。
sqlcode:-507 sqlstate:24501 |
SQL0508N |
在 UPDATE 或 DELETE 语句中指定的游标未定位在行上。 | 当指定的游标未定位在对象表行上时,程序尝试执行 UPDATE 或 DELETE WHERE CURRENT OF 游标语句。 游标必须定位在要更新或删除的行上。
如果删除了某一行,那么游标不再定位于该行上。 这包括执行 ROLLBACK TO SAVEPOINT 时在保存点内的任何游标使用。 联合系统用户:远程数据源中的记录已被另一应用程序(或此应用程序中的另一游标)更新和/或删除,该记录不再存在。 无法处理该语句。 未更新或删除任何数据。 |
更正应用程序的逻辑,确保游标在执行 UPDATE 或 DELETE 语句之前正确定位在对象表的欲处理行上。 注意,如果 FETCH 返回消息 SQL0100W (SQLCODE = 100),那么表示游标不再定位在某行上。
sqlcode:-508 sqlstate:24504 |
SQL0509N |
在 UPDATE 或 DELETE 语句中指定的表与在游标的 SELECT 中指定的表不相同。 | 程序尝试执行 UPDATE 或 DELETE WHERE CURRENT OF 游标语句,而在该语句中所指定的表与在声明游标的 SELECT 语句中指定的表名不匹配。
无法处理该语句。 |
更正应用程序,确保在 UPDATE 或 DELETE 语句中标识的表与在游标声明中标识的表相同。
sqlcode:-509 sqlstate:42827 |
SQL0510N |
对指定的游标不允许执行 UPDATE 或 DELETE。 | 程序尝试对表或视图定义执行 UPDATE 或 DELETE WHERE CURRENT OF 游标语句,而该表或视图定义不允许请求的更新或删除操作。 例如,此错误会发生在自只读视图的删除或在未用 FOR UPDATE 子句定义游标的更新中。
在数据库管理器上,如果 SELECT 语句包括下列内容,那么视图是只读的:
注意,这些条件不适用于 SELECT 语句的子查询。 游标是用 FOR FETCH ONLY 子句声明的。 游标不明确且指定了 BLOCKING ALL 绑定选项。 游标引用具有 INSTEAD OF UPDATE(或 DELETE)触发器的视图。 游标直接或间接引用了使用 WITH ROW MOVEMENT 子句定义的视图并且尝试了 UPDATE WHERE CURRENT OF CURSOR。 无法处理该语句。 |
如果数据库管理器使该语句失败,且游标基于只读的 SELECT 或 VALUES 语句,那么不要对它发出任何更新或删除语句。
如果数据库管理器使语句失败,而且游标不基于只读的 SELECT 或 VALUES 语句,而且该游标是用 FOR FETCH ONLY 子句定义的,那么从游标定义中移除此子句,或者不发出任何更新或删除语句。 如果数据库管理器使语句失败,并且不能确定游标是否是仅访存的或可从它的定义或上下文更新的,那么将程序与 BLOCKING NO 或 BLOCKING UNAMBIG 绑定选项重新绑定。 如果数据库管理器使语句失败,且游标基于具有 INSTEAD OF UPDATE(或 DELETE)触发器的视图,那么使用搜索到的 UPDATE(或 DELETE)语句。 如果数据库管理器使该语句失败,且游标直接或间接引用了使用 WITH ROW MOVEMENT 子句定义的视图,那么不要对它发出任何更新语句。 联合系统用户:找出导致请求失败的数据源中的问题。 如果数据源使该请求失败,那么检查该数据源的限制以确定问题原因及其解决方案。 如果存在对数据源的限制,请参阅该数据源的 SQL Reference 手册,以确定该对象不可更新的原因。 sqlcode:-510 sqlstate:42828 |
SQL0511N |
不允许 FOR UPDATE 子句,因为由游标指定的表不可修改。 | 不能更新 SELECT 或 VALUES 语句的结果表。
在数据库管理器上,如果游标基于 VALUES 语句或包含下列任一项的 SELECT 语句,那么结果表是只读的:
注意,这些条件不适用于 SELECT 语句的子查询。 无法处理该语句。 |
不要对指定的结果表执行更新。
联合系统用户:找出导致请求失败的数据源中的问题。 如果数据源使该请求失败,那么检查该数据源的限制以确定问题原因及其解决方案。 如果存在对数据源的限制,请参阅该数据源的 SQL Reference 手册,以确定该对象不可更新的原因。 sqlcode:-511 sqlstate:42829 |
SQL0512N |
由于以不受支持的方式使用了联合三部分名称,因此语句或命令失败。 三部分名称:名称。 原因码:原因码。 | 通过使用联合三部分名称直接引用远程对象,不必使用昵称就可以引用远程对象。
当语句以不受支持的方式使用三部分名称时,将返回此消息。 原因码指示了遇到的限制:
|
请查看联合三部分名称限制,然后修改此语句或命令,使其仅以受支持的方式使用三部分名称。
sqlcode:-512 sqlstate:56023 |
SQL0513W |
SQL 语句将修改整个表或视图。 | UPDATE 或 DELETE 语句不包含 WHERE 子句,因而如果执行了此语句,那么会修改该表或视图的所有行。
该语句被接受。 联合系统用户:并非所有数据源都会报告此警告情况。 只要存在该情况,联合服务器都会尝试发出此警告,但不保证联合服务器总可以检测到此情况。 不要依靠此警告来避免 UPDATE/DELETE 操作影响整个表或视图。 |
确保预期修改的是整个表或视图。
sqlcode:+513 sqlstate:01504 |
SQL0514N |
游标 名称 不处于预编译状态。 | 应用程序尝试使用不处于已预编译状态的游标。 此游标与满足下列条件的语句相关联:
无法处理该语句。 |
sqlcode:-514 sqlstate:26501 |
SQL0516N |
DESCRIBE 语句未指定预编译语句。 | 在 DESCRIBE 语句中的语句名必须指定在同一数据库事务中预编译的语句。
无法处理该语句。 |
验证语句名是否指定了已预编译的语句。
sqlcode:-516 sqlstate:26501 |
SQL0517N |
游标 名称 标识一个并非 SELECT 或 VALUES 语句的预编译语句。 | 因为游标声明中指定的预编译语句不是 SELECT 或 VALUES 语句,所以游标 名称 无法像指定的那样使用。
无法处理该语句。 |
验证是否在 PREPARE 和 DECLARE CURSOR 中为游标 名称 语句正确指定了语句名。 或者更正程序,以确保仅将预编译的 SELECT 或 VALUES 语句与游标声明配合使用。
sqlcode:-517 sqlstate:07005 |
SQL0518N |
EXECUTE 语句中指定的语句未处于预编译状态,或者它是 SELECT 或 VALUES 语句。 | 应用程序尝试执行满足下列条件的语句:
无法处理该语句。 |
sqlcode:-518 sqlstate:07003 |
SQL0519N |
PREPARE 语句标识打开的游标 名称 的 SELECT 或 VALUES 语句。 | 当游标已打开时,应用程序尝试为指定的游标预编译 SELECT 或 VALUES 语句。
不能预编译该语句。 游标未受影响。 |
更正应用程序,以便它不尝试为打开的游标预编译 SELECT 或 VALUES 语句。
sqlcode:-519 sqlstate:24506 |
SQL0525N |
因为该 SQL 语句在节 = 节号 程序包 = 程序包模式.程序包名 一致性标记 = X一致性标记 的绑定时间出错,所以无法执行该语句。 |
下列其中一项:
注意 一致性标记 是以十六进制给出的。 无法执行该语句。 |
如果 SQL 语句不应在指示的位置执行,那么更正该程序,以使出错的语句不在该位置执行。 预编译、编译和绑定替换程序包。 如果 SQL 语句应在指示的位置执行,那么更正发现的问题,并使用 ACTION(REPLACE) 重新发出 PREP 或 BIND。 如果发现了多个版本的程序包,那么发出下列 SELECT 语句以确定哪个版本有错误:SELECT PKGVERSION FROM SYSCAT.PACKAGES where PKGSCHEMA=’pkgschema’ AND PKGNAME = ‘pkgname’ and HEX(UNIQUE_ID) = ‘contoken’
sqlcode:-525 sqlstate:51015 |
SQL0526N |
由于此语句引用了已创建的临时表或已声明的临时表,并包含不可用于临时表的功能,因此未处理此语句。 | 您可以将数据处理结果暂时存储在临时表中。
在临时表的使用方式方面,存在一些限制。 例如,临时表不支持用户定义的类型列,并且不能对临时表启用索引压缩。 在尝试执行以不受支持的方式使用临时表的 SQL 语句时,将返回此消息。 |
通过下列其中一种方式对此消息作出响应:
sqlcode:-526 sqlstate:42995 |
SQL0528N |
表或昵称 表名或昵称名 已有一个唯一约束,该唯一约束是约束 名称 的重复。 | UNIQUE 子句与对于表 表名 已存在的 PRIMARY KEY 子句、另一 UNIQUE 子句、PRIMARY KEY 或 UNIQUE 约束使用同一列列表。 不允许重复的唯一约束。
名称 是约束名(如果约束已指定或存在)。 如果未指定约束名,那么 名称 是 UNIQUE 子句的列列表中指定的第一个列名,后跟三个句点。 无法处理该语句。 |
移除重复的 UNIQUE 子句,或将列列表更改为已不是唯一约束一部分的列集合。
sqlcode:-528 sqlstate:42891 |
SQL0530N |
FOREIGN KEY 约束名 的插入或更新值不等于父表的任何父键值。 | 正在设置对象表的外键中的值,但此值不等于父表的任何父键值。
在将一行插入从属表时,外键的插入值必须等于关联关系的父表的任何行的某些父键值。 类似地,更新外键的值时,外键的更新值必须等于该语句完成时关联关系的父表的任何一行的父键值。 联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 某些数据源未向 约束名 提供适当的值。 在这些情况下,消息标记将具有以下格式:“<data source>:UNKNOWN”,指示指定数据源的实际值未知。 无法执行该语句。 对象表的内容未更改。 |
首先检查外键的插入或更新值,然后将该值与父表的每一个父键值作比较,以确定并更正问题。
sqlcode:-530 sqlstate:23503 |
SQL0531N |
不能更新关系 约束名 的父行中的父键。 | 某项操作尝试更新父表行中的父键,但在 约束名 约束中,指定行中的父键在从属表中有与其相关联的从属行。
当约束 约束名 的更新规则为 NO ACTION 时,如果父行在语句完成时有任何从属行,那么不能更新父行中父键的值。 当约束 约束名 的更新规则是 RESTRICT 时,如果在尝试更新父键时父行有任何从属行,那么不能更新父行中父键的值。 联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 某些数据源未向 约束名 提供适当的值。 在这些情况下,消息标记将具有以下格式:“<data source>:UNKNOWN”,指示指定数据源的实际值未知。 无法执行该语句。 父表的内容未更改。 |
检查对象表的父键和从属表的外键,以确定是否应该更改父键的指定行的值。 如果这未显示问题,那么检查对象表和从属表的内容来确定并更正问题。
sqlcode:-531 sqlstate:23001, 23504 |
SQL0532N |
因为关系 约束名 限制删除,所以不能删除父行。 | 某项操作尝试删除父表的指定行,但指定行中的父键在引用约束 约束名 中有从属行,并且已为关系指定了 NO ACTION 或 RESTRICT 删除规则。
当约束 约束名 的删除规则为 NO ACTION 时,如果从属行在语句完成时仍依赖于父键,那么不能删除父表的行。 当约束 约束名 的删除规则为 RESTRICT 时,如果父行在删除时有任何从属行,那么不能删除父表的行。 注意,删除可以级联以删除有 NO ACTION 或 RESTRICT 删除规则的从属表中的其他行。 因此,约束 约束名 可以在与原始删除操作不同的表上。 联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 某些数据源未向 约束名 提供适当的值。 在这些情况下,适当的字段包含一些值(如 “unknown”),指示实际值未知。 无法执行该语句。 表的内容未更改。 |
检查所有派生表的删除规则以确定并更正问题。 涉及的特定表可根据关系 约束名 确定。
sqlcode:-532 sqlstate:23001, 23504 |
SQL0533N |
因为关系将全查询的结果限制为一行,所以 INSERT 语句无效。 | 带有全查询的 INSERT 操作尝试将多行插入到在引用约束的相同关系中作为父代和从属项的表中。
INSERT 操作的全查询应返回不超过一行的数据。 无法执行 INSERT 语句。 对象表的内容未更改。 联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 |
检查全查询的搜索条件,以确保选择不超过一行数据。
sqlcode:-533 sqlstate:21501 |
SQL0534N |
无效的多行更新。 | UPDATE 操作尝试执行包括在主键或唯一索引中的列的多行更新。
不支持主键或唯一索引的列的多行更新。 无法执行UPDATE语句。 表的内容未更改。 联合系统用户:该约束可存在于联合服务器上(如果子表和父表作为联合服务器上的表存在),也可存在于数据源上(如果子表和父表存在于该数据源上)。 |
确保 UPDATE 语句的搜索条件仅选择了一个对象表行来更新。
sqlcode:-534 sqlstate:21502 |
SQL0535N |
DELETE 语句是无效的,因为自引用关系限制仅可删除一行。 | 带有 WHERE 子句的 DELETE 操作尝试从在带有 RESTRICT 或 SET NULL 删除规则的引用约束的同一关系中作为父代和从属项的表中删除多行。
DELETE 操作的 WHERE 子句应只选择不超过一行的数据。 无法执行 DELETE 语句。 对象表的内容未更改。 联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 |
检查 WHERE 子句搜索条件,以确保选择不超过一行数据。
注意:这只是早于版本 2 的 DB2 发行版中的限制。 sqlcode:-535 sqlstate:21504 |
SQL0536N |
DELETE 语句是无效的,因为表 名称 会受到该操作的影响。 | 对在子查询中引用的所指示的表尝试了 DELETE 操作。
在 DELETE 语句的子查询中引用的所指示的表可能受到影响,因为它是:
联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 某些数据源未向 名称 提供适当的值。 在这些情况下,适当的字段包含一些值(如 “unknown”),指示实际值未知。 无法处理该语句。 |
当表可能受 DELETE 语句影响时,不要在 DELETE 语句子查询中引用该表。
注意:此错误仅适用于版本 2 之前的 DB2 发行版,以及通过 DB2 Connect 访问的主机。 sqlcode:-536 sqlstate:42914 |
SQL0537N |
键列列表多次标识了 列名 列。 | 列名 列在键列列表中多次出现。 键列列表可能多次出现在 CREATE 或 ALTER 语句的 PRIMARY KEY 子句、FOREIGN KEY 子句、UNIQUE 子句、DISTRIBUTE BY 子句、ORGANIZE BY 子句或 PARTITION BY 子句中或者作为函数依赖性。
联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 某些数据源未向 列名 提供适当的值。 在这些情况下,适当的字段包含一些值(如 “unknown”),指示实际值未知。 无法处理该语句。 |
移除重复的列名。
sqlcode:-537 sqlstate:42709 |
SQL0538N |
FOREIGN KEY 名称 不符合表或昵称 表名或昵称名 的父键的描述。 | 所指示的外键的定义不符合表或昵称 表名或昵称名 的父键描述。
原因可能是:
当在 FOREIGN KEY 子句中指定时,名称 是约束名。 如果未指定约束名,那么 名称 是该子句中指定的第一个列名,后跟三个句点。 联合系统用户应注意:某些数据源未向 名称 和 表名或昵称名 提供适当的值。 在这些情况下,相应的字段中包含一些值(例如,“未知”)用于指示未知实际值。 约束可存在于数据源上(如果子表和父表存在于该数据源上)。 无法处理该语句。 |
更正该语句,以使外键描述与父键描述一致。
sqlcode:-538 sqlstate:42830 |
SQL0539N |
表或昵称 名称 没有 键类型 键。 |
发生了下列情况之一:
联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 某些数据源未向 名称 和 键类型 提供适当的值。 在这些情况下,适当的字段包含一些值(如 “unknown”),指示实际值未知。 无法处理该语句。 在引用约束中不能将系统目录定义为父代。 |
创建引用约束时,在指定任何外键 (约束) 之前指定主键。
sqlcode:-539 sqlstate:42888 |
SQL0540N |
表 表名 的定义不完整,因为它缺少主索引或必需的唯一索引。 | 所指定的表是用 PRIMARY KEY 子句或 UNIQUE 子句定义的。 其定义不完整,在对主键(主索引)和对任何 UNIQUE 子句中的每组列(必需的唯一索引) 定义唯一的索引之前,不能使用该表。 尝试在 FOREIGN KEY 子句中或在 SQL 处理语句中使用该表。
无法执行该语句。 |
在引用该表前,在表上定义主索引或必需的唯一索引。
sqlcode:-540 sqlstate:57001 |
SQL0541W |
引用约束、主键或唯一约束 名称 被忽略,因为它是重复的约束。 | 如果 名称 指的是引用约束,那么 FOREIGN KEY 子句使用与另一 FOREIGN KEY 子句相同的外键和父表或相同的外键和父昵称。
如果 名称 指的是主键或唯一约束,那么下列其中一种情况存在。
名称 是约束名(如果指定)。 如果未指定约束名,那么 名称 是 FOREIGN KEY 或 UNIQUE 子句的列列表中指定第一个列名,后跟三个句点。 联合系统用户:约束可以存在于数据源上(如果子表和父表存在于该数据源上)。 某些数据源未向 名称 提供适当的值。 在这些情况下,相应的字段中包含一些值(例如,“未知”)用于指示未知实际值。 未创建指示的引用约束或唯一约束。 成功地处理了该语句。 |
不需要执行任何操作。 处理可以继续。
sqlcode:+541 sqlstate:01543 |
SQL0542N |
名为 列名 的列不能是主键或者唯一键约束的列,因为它可以包含空值。 | 在 PRIMARY KEY 子句或 UNIQUE 子句中标识的名为 列名 的列被定义为允许使用空值,或者尝试将作为 PRIMARY KEY 或 UNIQUE 约束的一部分的列改变为允许使用空值。
联合系统用户:某些数据源不会为 列名 提供适当的值。 在这些情况下,相应的字段中包含一些值(例如,“未知”)用于指示未知实际值。 无法处理该语句。 |
更正列、主键或唯一键定义。 如果 ALTER TABLE 语句返回了此错误,那么必须在移除 PRIMARY KEY 或 UNIQUE 约束之后才能将列改变为允许空值。
sqlcode:-542 sqlstate:42831 |
SQL0543N |
因为检查约束 约束名 限制删除,所以不能删除父表中的行。 | 不能执行删除操作,因为目标表是父表并与带有 SET NULL 删除规则的从属表的引用约束连接。 但是,对从属表定义的检查约束对该列进行了限制,不允许它包含空值。
无法处理该语句。 |
检查外键及其在从属表中的删除规则,以及冲突检查约束。 更改删除规则或检查约束,使它们不再互相冲突。
sqlcode:-543 sqlstate:23511 |
SQL0544N |
因为表包含违反约束的行,所以不能添加检查约束 约束名。 | 表中至少一现有行违反了检查约束,该约束是在 ALTER TABLE 语句中添加的。
无法处理该语句。 |
检查在 ALTER TABLE 语句中指定的检查约束定义和表中的数据,以确定违反约束的原因。 更改检查约束或数据,以便不违反该约束。
sqlcode:-544 sqlstate:23512 |
SQL0545N |
因为行不满足检查约束 约束名,所以不允许所请求的操作。 | 检查约束违反可能在 INSERT 或 UPDATE 操作中发生。 结果行违反了该表上的检查约束定义。
无法处理该语句。 |
检查在目录视图 SYSCAT.CHECKS 中的数据和检查约束定义,以确定为什么 INSERT 或 UPDATE 语句失败。 更改数据,以便不违反该约束。
sqlcode:-545 sqlstate:23513 |
SQL0546N |
检查约束 约束名 无效。 | CREATE TABLE 或 CREATE NICKNAME、ALTER TABLE 或 ALTER NICKNAME 语句中的检查约束由于下列其中一个或多个原因而无效:
无法处理该语句。 |
根据错误原因的不同,用户响应为下列其中一项:
sqlcode:-546 sqlstate:42621 |
SQL0548N |
使用检查条件元素定义的检查约束或生成列无效。 | CREATE TABLE 或 CREATE NICKNAME、ALTER TABLE 或 ALTER NICKNAME 语句中的检查约束由于下列其中一个或多个原因而无效:
在错误消息的正文中的标记列示了无效项目。 无法处理该语句。 |
根据错误原因的不同,用户响应为下列其中一项:
sqlcode:-548 sqlstate:42621 |
SQL0549N |
statement 语句不允许用于 object-type1 object-name1 因为绑定选项 DYNAMICRULES RUN 对 object-type2 无效。 | 程序尝试发出指示的 SQL 语句,该语句是仅可在程序包展示运行行为中动态预编译的几条 SQL 语句之一。 那些 SQL 语句是:
不能执行 SQL 语句。 |
执行下列其中一个操作以更正错误:
sqlcode:-549 sqlstate:42509 |
SQL0551N |
由于授权标识不具有执行操作所必需的授权或特权,因此语句失败。 授权标识:授权标识。 操作:操作。 对象:对象名。 | 无法对所指定对象执行该操作。 通常会因为授权标识没有执行该操作所需的权限或特权而返回此消息。 在某些情况下,系统会对不允许该操作的对象(即使授权标识具有管理权限)返回此消息。
可能会因为不同原因而返回此消息。 以下是可能返回此消息的场景的一些示例:
可以在联合服务器和/或数据源中执行所需的授权。 某些数据源没有为运行时标记 授权标识、操作 和 对象名 提供适当的值。 在这些情况下,消息标记可能具有下列其中一种格式:
|
如果授权标识 授权标识 没有必需的权限或特权,请根据情况授予必需的特权或权限。
以下是对本消息的说明部分中描述的场景的响应:
sqlcode:-551 sqlstate:5UA0K 和 42501 |
SQL0552N |
授权标识 没有执行操作 操作 的特权。 | 授权标识 授权标识 尝试在没有正确权限的情况下执行指定的 操作。
联合系统用户:某些数据源未提供 authorization-ID 和 <operation> 的相应值。在这些情况下,消息标记将具有以下格式:“<data source> AUTHID:UNKNOWN”和“UNKNOWN”,指示指定数据源中 authid 和 operation 的实际值未知。 无法处理该语句。 |
确保 授权标识 有执行该操作的权限。
联合系统用户:可在联合服务器和/或数据源处执行此授权。 sqlcode:-552 sqlstate:42502 |
SQL0553N |
不能以模式名 模式名 来创建对象。 | 模式名 模式名 无效的原因取决于正在创建的对象的类型。
无法处理该语句。 |
使用有效的模式名或移除显式模式名并且重新运行该语句。
sqlcode:-553 sqlstate:42939 |
SQL0554N |
授权标识不能为自己授予特权或权限。 | 一个授权标识尝试执行一个语句来为它自己授予特权或权限。 如果这是一个 GRANT 语句,那么该授权标识本身将作为要对其授予特权、权限、安全标号或解除的授权标识列表中的一个条目出现。 如果这是一个 CREATE TRUSTED CONTEXT 或 ALTER TRUSTED CONTEXT,那么该授权标识本身将作为 SYSTEM AUTHID 属性的值或其中一个在 WITH USE FOR 子句中指定的权限名称出现。
无法处理该语句。 |
移除或替换该语句中的授权标识。
sqlcode:-554 sqlstate:42502 |
SQL0555N |
授权标识不能撤销本身的特权。 | 授权标识尝试执行 REVOKE 语句,其中授权标识本身作为将从其中撤销特权的授权标识列表中的条目之一出现。
无法处理该语句。 |
从列表中移除授权标识。
sqlcode:-555 sqlstate:42502 |
SQL0556N |
尝试撤销 授权标识 的特权、安全标号、免除凭证或角色遭到拒绝,因为 授权标识 没有此特权、安全标号、免除凭证或角色。 | 不能撤销特权、安全标号、免除凭证或角色,因为 授权标识 没有该特权、安全标号、免除凭证或角色。
无法处理该语句。 |
更改 REVOKE 语句以符合 REVOKE 规则,然后重新提交该语句。 确保当 REVOKE 语句列示数个要撤销的特权、安全标号、免除凭证或角色以及授权标识的列表时,每个授权标识至少拥有其中一个指定的特权、安全标号、免除凭证或角色。
sqlcode:-556 sqlstate:42504 |
SQL0557N |
不能授予或撤销指定的特权组合。 |
发生了下列情况之一:
无法处理该语句。 |
更正并重新提交该语句。
sqlcode:-557 sqlstate:42852 |
SQL0558N |
从 authorization-ID 撤销权限的尝试被拒绝,因为 authorization-ID 拥有 control 权限。 | 授权标识具有控制特权。 要撤销的特权是 由控制 特权隐式提供的,因此,除非同时撤销控制特权, 否则不能将其撤销。
CONTROL 的有效值为如下所示:
无法执行该语句。 未撤销任何特权。 |
如果需要,可撤销控制特权。
sqlcode:-558 sqlstate:42504 |
SQL0562N |
未执行该语句,因为无法(直接或间接通过角色)对组 PUBLIC 授予指定数据库或模式特权。 | 可通过发出 GRANT 语句对用户或组授予特权。
如果尝试(直接或间接通过使用角色)对组 PUBLIC 授予不受支持的特权,那么会返回此消息。 |
不需要任何响应。
不支持对 PUBLIC 授予管理权限,例如,DBADM 或 SCHEMAADM。 sqlcode:-562 sqlstate:42508 |
SQL0567N |
操作失败,因为指定授权名称不符合标识命名规则。 授权名称:authorization-name。 | 所有数据库对象、用户名或授权名称、密码、组、文件和路径的命名都存在规则。 其中某些规则特定于所运行的平台。
指定的授权名称不符合标识命名规则时,会返回此消息。 例如,授权名称包含 a 到 z、A 到 Z、0 到 9 以及受支持特殊字符以外的字符时,可能会返回此消息。 无法处理该语句。 |
指定符合标识命名规则的授权名称并再次执行此操作。
sqlcode:-567 sqlstate:42602 |
SQL0569N |
授权标识 权限名称 不能唯一地标识系统中的用户、组或角色。 | GRANT 或 REVOKE 语句所指定的授权标识不能唯一地标识安全性名称空间中的用户、角色或组。 对 权限名称 的引用不确定。 请注意,当使用 DCE 安全性时,USER、GROUP 或 ROLE 关键字总是必需的。 | 请更改该语句以将 USER、GROUP 或 ROLE 关键字显式指定为唯一地标识所指定授权标识。
sqlcode:-569 sqlstate:56092 |
SQL0570W |
未授予类型为 object-type 的对象 object-name 上的所有请求权限。 | 对类型为 对象类型 的对象 对象名 尝试了“授权”(GRANT)操作,但是未授予某些或所有特权。 发出该语句的授权标识不具有以 GRANT 选项授权的所有特权,或者不具有 ACCESSCTRL 或 SECADM 权限。
授予了所请求的所有有效特权。 |
获取必需的权限并再次尝试执行该操作。
sqlcode: +570 sqlstate:01007 |
SQL0572N |
程序包 程序包名 不起作用。 | 程序包 程序包名 标记为不工作并且必须显式重新绑定(而不指定 RESOLVE CONSERVATIVE)才能使用。 不能使用此程序包,因为已经删除一个或多个它所依赖的用户定义的函数。 | 使用 REBIND(不指定 RESOLVE CONSERVATIVE)或 BIND 命令来显式重新绑定命名程序包。
sqlcode:-572 sqlstate:51028 |
SQL0573N |
在约束 名称 的引用子句中指定的列列表不标识父表或昵称 表名 的唯一约束。 | 在 名称 标识的约束的引用子句中指定了列名列表,但该列表与所引用表 表名 的主键或任何唯一键的列名都不匹配。
名称 是约束名(如果指定)。 如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。 无法处理该语句。 |
更正引用子句中的列列表或将唯一约束添加至所引用的表或昵称中。
sqlcode:-573 sqlstate:42890 |
SQL0574N |
表 table-name 中列 column-name 的 DEFAULT 值或 IDENTITY 属性值无效。 原因码:原因码。 |
DEFAULT 值或 IDENTITY 属性值对于表 表名 中的列 列名 无效。 可能的原因码如下所示:
无法处理该语句。 |
根据返回的原因码更正 DEFAULT 值或 IDENTITY 属性值。
sqlcode:-574 sqlstate:42894 |
SQL0575N |
不能使用视图或具体化查询表 名称,因为它已经标记为不可用。 |
视图或具体化查询表 名称 已经标记为不可用,因为已经移除了它所依赖的表、视图、别名或特权。 不能由除下列其中一条语句外的任何 SQL 语句使用该视图:
无法处理该语句。 |
如果 名称 是视图,那么通过发出 CREATE VIEW 语句,并使用同一视图定义作为不可用视图来重新创建该视图。 如果 名称 是具体化查询表,那么通过使用与不可操作具体化查询表中相同的具体化查询表定义发出 CREATE TABLE 语句来重新创建具体化查询表。
sqlcode:-575 sqlstate:51024 |
SQL0576N |
不能为 名称-2 创建别名 名称,因为它将导致重复的别名链。 | 名称-2 上 名称 的别名定义将导致可能永远都不能解析的重复别名链。 例如,“别名 A 参阅别名 B,而别名 B 参阅别名 A”就是永远不能解析的别名链。
无法处理该语句。 |
更改 名称 的别名定义,或修订别名链中其他别名定义之一的定义以避免重复链。
sqlcode:-576 sqlstate:42916 |
SQL0577N |
用户定义的例程 例程名(特定名称 特定名称)尝试修改数据,但该例程未定义为 MODIFIES SQL DATA。 | 不允许用来实现例程实体的程序修改 SQL 数据。 | 移除任何修改数据的 SQL 语句然后重新编译程序。 调查允许的 SQL 的级别,就像在定义例程时所指定的那样。
sqlcode:-577 sqlstate:38002 sqlstate:42985 |
SQL0579N |
例程 例程名(特定名称 特定名称)尝试读取数据但是没有定义为 READS SQL DATA 或 MODIFIES SQL DATA。 | 不允许用来实现例程的实体的程序读取 SQL 数据。 | 移除任何读取数据的 SQL 语句然后重新编译程序。 调查允许的 SQL 的级别,就像在定义例程时所指定的那样。
sqlcode:-579 sqlstate:38004 sqlstate:42985 |
SQL0580N |
CASE 表达式的结果表达式不能都为 NULL。 | 语句中有一个 CASE 表达式,它所有的结果表达式(THEN 和 ELSE 关键字后面的表达式)都以关键字 NULL 编码。
无法处理该语句。 |
更改 CASE 表达式以至少包括一个除关键字 NULL 外的结果表达式。
sqlcode:-580 sqlstate:42625 |
SQL0581N |
CASE 表达式或 DECODE 函数的结果表达式的数据类型不兼容。 | 语句中有一个 CASE 表达式或 DECODE 函数,它们有不兼容的结果表达式(跟在 CASE 表达式的 THEN 和 ELSE 关键字后面的表达式)。
对结果表达式使用“结果数据类型规则”来确定 CASE 表达式的数据类型或者 DECODE 函数的结果。 无法处理该语句。 |
更正结果表达式,使它们兼容。
sqlcode:-581 sqlstate:42804 |
SQL0582N |
VALUES 子句中的 CASE 表达式、IN 谓词、GRUOP BY 子句或 ORDER BY 子句不能包括定量谓词、使用全查询的 IN 谓词或 EXISTS 谓词。 |
CASE 表达式的搜索条件是:
而 CASE 表达式是以下各项的一部分:
不支持这样的 CASE 表达式。 该 CASE 表达式可能是用 SQL 编写的函数的一部分。 无法处理该语句。 |
从 CASE 表达式中移除对定量谓词、IN 谓词或 EXISTS 谓词的使用。 如果该 CASE 表达式是函数的一部分,那么可能需要编写不带导致错误的函数的查询。
sqlcode:-582 sqlstate:42625 |
SQL0583N |
使用例程或表达式 名称 是无效的,因为它是不确定的或者具有外部操作。 | 例程(函数或方法)或表达式已定义为不确定的或者定义为具有外部操作。 这在使用它的上下文中不受支持。 这些不支持的上下文是:
无法处理该语句。 |
如果不打算使用不确定的或外部的操作例程或表达式,那么以一个没有这些特征的例程来替代。 如果要执行与不确定的或外部的操作例程或表达式相关的行为,请使用意图明确的语句替代格式。
sqlcode:-583 sqlstate:42845 |
SQL0584N |
由于 NULL 关键字或 DEFAULT 关键字的使用无效而使得此语句失败。 | 创建表时,可为一个或多个列定义缺省值。 在为某些列定义了此缺省行为的情况下将数据插入或合并到表中时,在 VALUES 子句中定义“DEFAULT”将导致缺省值插入或合并到这些列中。
可以使用 NULL 关键字在语句中指出特定列不存在数据。 DEFAULT 关键字和 NULL 关键字的使用方式有一定的需求和限制。 下面只是一些示例:
|
修改语句,使得不会以不受支持的方式使用 NULL 关键字或 DEFAULT 关键字,然后重新提交该语句。
sqlcode:-584 sqlstate:42608 |
SQL0585N |
模式名 模式名 在集合 专用寄存器 语句中出现了多次。 | 专用寄存器 专用寄存器 的 SET 语句多次包括了模式 模式名。
无法处理该语句。 |
验证 SET 语句中的列表包含重复值。 如果错误只是不正确地输入了模式名,它偶尔会重复另一个条目,那么正确地输入模式名并重新发出该语句。 如果该条目确实是重复的,那么不需要执行任何操作。
sqlcode:-585 sqlstate:42732 |
SQL0586N |
专用寄存器 专用寄存器的总长度不能超过 长度。 | 专用寄存器 被定义为小于在 SET 语句上指定的值的长度。 字符串内容包括每个用双引号定界并用逗号与下一个模式名隔开的模式名。 专用寄存器中所有模式名字符串的总长度不能超过专用寄存器的最大长度。 SET PATH 或 SET CURRENT PACKAGE PATH 语句可能会产生此消息。
不能处理语句或命令。 |
移除模式名以减小总长度,使它适合专用寄存器的长度。 如果失败的语句是 SET PATH,并且需要所有模式名,那么可能需要合并某些用户定义的函数、过程、方法或者单值类型,以便 SQL PATH 上需要较少的模式名。
sqlcode:-586 sqlstate:42907 |
SQL0590N |
上下文 name 中指定的名称 context-tag 不唯一。 | 名称 名称 被指定为由 上下文标签 定义的上下文中的参数、SQL 变量、游标、标号或条件。 该名称不是唯一的。
如果 context-tag 为“BEGIN…END”,那么错误的上下文是动态 SQL 复合语句。 否则,错误的上下文是触发器或例程,而 上下文标签 是包含复合语句的触发器名或例程名。
|
更改该名称,以使它唯一。
sqlcode:-590 sqlstate:42734 |
SQL0593N |
必须为“行更改时间戳记”列、“行开始”列、“行结束”列或者时间段的列指定 NOT NULL。 column-name。 | “行更改时间戳记”列、“行开始”列和“行结束”列不支持空值。 在 CREATE TABLE 或 ALTER TABLE 语句中定义了这样一列时,必须对这些列指定 NOT NULL 子句。
必须将时间段的列定义为 NOT NULL。 无法执行该语句。 |
请更改该语句以便对列 列名 指定 NOT NULL。
sqlcode:-593 sqlstate:42831 |
SQL0595W |
已将隔离级别 请求级别 已升级为 升级的级别。 | DB2 不支持所指定的隔离级别。 它已升级为由 DB2 支持的下一个更高的隔离级别。 | 要避免此警告,可指定 DB2 支持的隔离级别。 DB2 支持隔离级别“可重复的读”(RR)、“读稳定性”(RS)、“游标稳定性”(CS) 和“未落实的读”(UR)。
sqlcode:+595 sqlstate:01526 |
SQL0597N |
无法检索 DATALINK 值。 原因码:原因码。 |
无法检索 DATALINK 值。 可能的原因码如下所示:
|
操作视原因码而定,如下所示。
sqlcode:-0597 sqlstate:42511 |
SQL0598W |
现有索引 名称 被用作主键或唯一键的索引。 | 定义主键或唯一键的 ALTER TABLE 操作需要索引,并且指定的索引与必需的索引相匹配。
如果非分区主键索引或非分区唯一键索引的索引描述所指定的一组列与主键或唯一键的列相同(顺序任意),并且它被指定为唯一索引,那么它将被视为匹配,而不考虑升序或降序指定。 但是,如果分区索引的列不是分区键列的超集,那么这些索引不会视为匹配。 该语句处理成功。 |
不需要执行任何操作。
sqlcode: +598 sqlstate:01550 |
SQL0599W |
不对基于长串数据类型的单值类型创建比较函数。 | 不为基于长串数据类型(BLOB、CLOB、DBCLOB、LONG VARCHAR 或 LONG VARGRAPHIC) 的单值类型创建比较函数,原因是相对应的函数不可用于这些内置数据类型。
这是警告情况。 该语句处理成功。 |
不需要执行任何操作。
sqlcode:+599 sqlstate:01596 |
SQL0600N |
因为特征符重复,或者是因为例程 例程名 将覆盖现有例程,所以无法生成该例程。 | 在 CREATE 或 ALTER 操作期间,无法创建系统生成的强制类型转换函数、observer 方法、mutator 方法或构造函数,原因是模式中已存在同名和同特征符的另一函数或方法,或者是因为将创建的方法或函数会覆盖现有方法。 | 为导致冲突的用户定义的类型、属性或强制类型转换函数选择另一名称,或删除与无法生成的函数或方法同名的函数或方法。
sqlcode:-600 sqlstate:42710 |
SQL0601N |
要创建对象的名称与类型 type 的现有名称 name 相同。 | CREATE 或 ALTER 语句尝试创建或添加对象 名称,但应用程序服务器上或同一语句中已存在类型为 类型 的该名称的对象。
如果 类型 是 FOREIGN KEY、PRIMARY KEY、UNIQUE 或 CHECK CONSTRAINT,那么 名称 是 ALTER NICKNAME、ALTER TABLE、CREATE NICKNAME 或 CREATE TABLE 语句中指定的或由系统生成的约束名。 如果 类型 为 ROLE,那么该名称是在 CREATE 或 ALTER ROLE 语句中指定的角色名。 如果 类型 是 DATA PARTITION,那么 名称 是在 ALTER TABLE 或 CREATE TABLE 语句中指定的数据分区名。 当使用 REGISTER 命令或者 XSR_REGISTER、XSR_DTD 或 XSR_EXTENTITY 这三个过程之一来注册 XML 模式存储库对象时也可能会产生此错误。 当 XSROBJECT 的名称已存在时出错。 联合系统用户:某些数据源未向 名称 和 类型 消息标记提供适当的值。 在这些情况下,名称 和 类型 将具有以下格式:“OBJECT:<data source> TABLE/VIEW”,“UNKNOWN”表示指定数据源处的实际值未知。 如果 类型 为“许可权”,那么 名称 是在 CREATE PERMISSION 语句中指定的许可权名称。 如果 类型 为“掩码”,那么 名称 是在 CREATE MASK 语句中指定的掩码名称。 如果 类型 为成员子集,那么 名称 是在 CALL SYSPROC.WLM_CREATE_MEMBER_SUBSET 语句中指定的成员子集名称。 无法处理该语句。 未创建任何新对象,且未改变或修改现有的对象。 |
删除现有的对象或为新对象选择另一名称。
联合系统用户:如果语句是 CREATE FUNCTION MAPPING 或 CREATE TYPE MAPPING 语句,那么用户还可考虑不提供类型映射名,系统将自动为此映射生成唯一名称。 sqlcode:-601 sqlstate:42710 |
SQL0602N |
由于指定了过多的列、时间段或者基于表达式的键,因此无法创建或变更索引。 | 可以包括在索引中的列数存在上限。 给定索引中允许的列数受各种因素影响:表的类型,以及包括在索引中的列是否使用随机顺序。
在尝试创建索引、变更索引或创建索引扩展,并且在索引中生成的列数将超出上限时,将返回此消息。 联合系统用户:
|
请查看与索引中的最大列数相关的限制。 然后,修改索引定义以减少列数。
联合系统用户:更改索引定义,以符合数据源的列限制。 sqlcode:-602 sqlstate:54008 |
SQL0603N |
不能创建唯一索引,因为该表包含将导致重复的索引条目的数据。 | 因为所指定的表已经包含与所标识列和时间段的值重复的行,所以不能将 CREATE INDEX 语句中定义的索引创建为唯一索引。 如果对 XML 列定义索引,那么可能会为单个 XML 文档生成重复的索引值。
如果分区表带有新连接的分区(即,SYSDATAPARTITIONS 目录表中 STATUS 列中的值为“A”的分区),那么新连接的分区中可能存在重复的索引条目。 CREATE INDEX 语句将对新连接的表分区创建索引分区,即使您尚无法查看该分区中的数据亦如此。 联合系统用户:数据源也可能会检测到此情况。 无法处理该语句。 未创建指定的索引。 |
检查数据以确认是否允许重复数据。 另外,考虑创建非 UNIQUE 索引。
如果索引已分区,并且表带有新连接的分区,请运行 SET INTEGRITY 语句以使新连接的分区进入联机状态。 SET INTEGRITY 语句可能会移除违反其他约束的重复数据,因此您应该再次发出 CREATE INDEX 语句。 如果未再次创建唯一索引,请查找将会导致索引条目重复的数据。 sqlcode:-603 sqlstate:23515 |
SQL0604N |
列的长度、精度或小数位属性、单值类型、结构化类型、数组类型、结构化类型的属性、例程、强制类型转换目标类型、类型映射或全局变量 数据项 无效。 | CREATE 语句或 ALTER 语句中的数据类型规范或者 CAST 规范出错。 可能指定了无效长度、精度或小数位属性,或可能是数据类型本身不正确,或是在此上下文中不允许。 错误的位置由 数据项 给出,如下所示:
联合系统用户:如果该语句是 CREATE TYPE MAPPING 语句,那么表示尝试创建类型映射,但本地数据类型或远程数据类型的类型属性无效。 原因可能包括:
无法处理该语句。 |
更正语法,然后再次尝试。
sqlcode:-604 sqlstate:42611 |
SQL0605W |
未创建索引,因为已经存在具有匹配定义的索引 名称。 | CREATE INDEX 语句已尝试创建一个与现有索引定义相匹配的新索引。
如果两个索引定义标识具有相同升序或降序规范的相同顺序的同一列,并且它们都强制唯一性或者只有新索引不强制唯一性,那么这两个索引定义相匹配。 如果两个索引定义标识具有相同或反向升序或降序索引键顺序的相同顺序的同一列,并且至少有一个索引同时支持正向和反向扫描,那么这两个索引定义也相匹配。 对于分区表而言,如果一个索引定义是分区索引定义,而另一个是非分区索引定义,那么它们不匹配,即使所有其他规范都匹配亦如此。 对于同一个表,其他方面的定义类似的分区索引和非分区索引可以共存。 未创建新索引。 |
除非现有索引 名称 是不适当的索引,否则不需要执行任何操作。 例如,如果现有索引 名称 不允许反向扫描,而必需的索引却允许,那么该现有索引不是适合的索引(反之亦然)。 在此情况下,在可创建必需的索引之前,必须删除索引 名称。
sqlcode: +605 sqlstate:01550 |
SQL0606N |
因为指定的表和列不归 所有者 所有,所以 COMMENT ON 或 LABEL ON 语句失败。 | 尝试对不存在或不归消息正文中指定的所有者所拥有的表或列进行注释或标记。
SQL 语句的处理已结束。 |
更正该语句。 再次尝试。
sqlcode:-606 sqlstate:42505 |
SQL0607N |
未对系统对象定义 操作。 | 不能对系统对象执行 SQL 语句中指定的 操作。 尝试了下列其中一项:
不能对保留模式中的任何表执行联机管理移动表操作。 无法处理该语句。 |
除了可通过可更新 SYSSTAT 视图更新的系统目录表的那些列,不要尝试修改任何系统对象。 请参阅 SQL Reference 以了解更多信息。
sqlcode:-607 sqlstate:42832 |
SQL0612N |
名称 是一个重复的名称。 | 发出了一条语句,该语句在不允许重复的地方多次出现同一名称。 这些名称的出现位置随语句类型的不同而有所变化。
无法处理该语句。 |
指定适合于语句类型的唯一名称。
sqlcode:-612 sqlstate:42711 |
SQL0613N |
由 名称 标识的主键、唯一键或表分区键太长或者包含太多的列和时间段。 | 此错误由以下之一引起:
如果指定 名称,那么它是主键或唯一约束的约束名。 如果未指定约束名,那么 名称 是主键或唯一约束子句中指定的第一个列名,后跟三个句点。 索引键长度限制基于索引使用的表空间的页大小: 对于表分区键,名称 就是超过了限制的列的列名。 无法处理该语句。 |
通过消去一个或多个键列或时间段,将主键、唯一键或表分区键定义修改为符合列限制 64 和键长度限制。
sqlcode:-613 sqlstate:54008 |
SQL0614N |
不能创建或改变索引或索引扩展 索引名,因为指定列的组合长度太长。 | 因为键列内部长度之和将超过索引键长度限制,所以无法创建或改变索引。 也不能使用 LONG VARCHAR、LONG VARGRAPHIC 或 LOB 列创建索引。 如果该索引定义于类型表之上,那么有附加的索引开销,使得最大长度减少 4 字节。 改变一个或多个列的数据类型的 ALTER TABLE 或 ALTER NICKNAME 语句可改变该索引。
因为 GENERATE KEY 函数返回的列的和超过索引键长度限制,所以无法创建索引扩展。 索引键长度限制基于索引使用的表空间的页大小: 无法处理该语句。 未创建指定的索引或索引扩展,或者无法改变表或昵称。 |
要修改索引定义或改变列,可消去一个或多个键列,并将键长度减小为允许的最大值。 对于索引扩展定义,指定另一 GENERATE KEY 函数,或者重新定义该函数以减小所返回的行的长度。
sqlcode:-614 sqlstate:54008 |
SQL0615N |
类型为 object-type 的 object-name 对象因当前正在使用而无法删除。 | 当对象的 DROP 语句正在使用中时,不能发出该语句。
无法处理该语句。 未删除该对象。 |
关闭那些直接或间接依赖于对象 对象名 的任何游标并重新提交该语句。
对于临时表空间,请在表空间未在使用时重新提交该语句。 对于租户,请确保任何连接都未在使用租户。 sqlcode:-615 sqlstate:55006 |
SQL0620N |
因为 用户标识 没有专用的可恢复数据库空间(表少于 255 个),所以 CREATE TABLE 语句失败。 | CREATE TABLE 语句中未指定数据库空间名,因此数据库管理器尝试查找 用户标识 所拥有的专用数据库空间。 在下列任何一种情况下都将出现此消息:
SQL 语句的处理已结束。 |
针对这三种情况的建议是:
然后重新运行 CREATE TABLE 语句。 如果适当,获取用户的专用数据库空间。 sqlcode:-620 sqlstate:57022 |
SQL0622N |
对于此数据库,子句子句无效。 | 该子句指示无效,因为它与定义的此数据库的特征不兼容。
原因可能是:
无法处理该语句。 |
更改或移除该子句并重新发出 SQL 语句。
要允许在非 Unicode 数据库中使用 Unicode 对象,更新数据库配置以指定备用整理顺序(ALT_COLLATE)。 sqlcode:-622 sqlstate:56031 |
SQL0623N |
表 名称 上已存在集群索引。 | CREATE INDEX 语句将在指定的表上创建第二个集群索引。 给定的表只能有一个集群索引。
无法执行该语句。 |
检查以确定表 名称 上的现有集群索引的标识和有效性。 考虑创建不具有 CLUSTER 属性的索引。
sqlcode:-623 sqlstate:55012 |
SQL0624N |
表 名称 已经具有使用所指定列和时间段的主键或唯一约束。 | 无法在 ALTER TABLE 语句中定义主键或唯一约束,因为所指示的表已经具有此类型的键或约束。
无法执行该语句。 |
一个表不能有多个主键。 一个表不能具有与现有约束重复的唯一约束。
sqlcode:-624 sqlstate:42889 |
SQL0628N |
存在涉及 子句类型 子句的多个关键字或有冲突的关键字。 | 关于为什么可能已诊断到语句的此情况,有几个可能的原因。 原因由 clause-type 的值指示。 可能存在的原因包括:
|
检查语句是否符合为该语句定义的语法及规则。 更正出现的任何无效的重复或冲突关键字。
sqlcode:-628 sqlstate:42613 |
SQL0629N |
不能指定 SET NULL,因为列或 FOREIGN KEY 名称 不能包含空值。 | ALTER TABLE 语句或指示的 FOREIGN KEY 子句的 SET NULL 选项无效。 对于 ALTER TABLE 语句,不能将列 名称 改变为不允许空值,因为此列是外键约束中操作类型为“on delete set NULL”的最后一个可空的列。
对于 FOREIGN KEY 子句,键的任何列都不允许空值。 名称 是约束名(如果指定)。 如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。 无法处理该语句。 |
对于 ALTER TABLE 语句,移除外约束或者至少将此约束中的其他一列更改为可空。 对于 FOREIGN KEY 子句,更改键的列以允许指定空值,或更改删除规则。
sqlcode:-629 sqlstate:42834 |
SQL0631N |
FOREIGN KEY 名称 太长,或带有太多列。 | 在 CREATE TABLE 语句中,FOREIGN KEY 子句中标识的列内部长度之和超出索引键长度限制,或者标识的列数超过 64。 并且,不能使用 LONG VARCHAR 列定义外键。
名称 是 FOREIGN KEY 子句中的约束名(如果指定)。 如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。
索引键长度限制基于索引使用的表空间的页大小: 最大密钥长度 页面大小 ————– ——— 1K 4K 2K 8K 4K 16K 8K 32K
无法处理该语句。 |
要修改外键定义,可消除一个或多个键列并遵循 64 列这一限制以及键长度限制。
sqlcode:-631 sqlstate:54008 |
SQL0632N |
FOREIGN KEY name 无效,因为删除规则限制(原因代码 = 原因代码)不能将表定义为表 table-name 的从属表。 |
因为 CREATE TABLE 或 ALTER TABLE 语句的对象表因下列其中一种原因码而不能定义为表 表名 的从属表,所以不能定义引用约束:
导致错误的是现有关系的删除规则,而不是 CREATE TABLE 或 ALTER TABLE 语句的 FOREIGN KEY 子句中指定的删除规则。 名称 是 FOREIGN KEY 子句中的约束名(如果指定)。 如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。 无法处理该语句。 |
如果可能,从 CREATE TABLE 或 ALTER TABLE 语句消除特定的 FOREIGN KEY 子句。
sqlcode:-632 sqlstate:42915 |
SQL0633N |
FOREIGN KEY 名称 的删除规则必须为 删除规则(原因码:原因码)。 |
在 CREATE TABLE 或 ALTER TABLE 语句的 FOREIGN KEY 子句中指定的删除规则无效。 由于下列其中一种原因码,指示的删除规则是必需的:
名称 是 FOREIGN KEY 子句中的约束名(如果指定)。 如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。 无法处理该语句。 |
如果有可能,更改删除规则。
sqlcode:-633 sqlstate:42915 |
SQL0634N |
FOREIGN KEY 名称 的删除规则不能是 CASCADE(原因码:原因码)。 |
CREATE TABLE 或 ALTER TABLE 语句的 FOREIGN KEY 子句中指定的 CASCADE 删除规则因下列其中一个原因码而无效:
无法处理该语句。 |
如果有可能,更改删除规则。
sqlcode:-634 sqlstate:42915 |
SQL0636N |
为数据分区 分区名 指定的范围无效。 原因码:原因码。 | 由于下列其中一个原因码所指示的原因,使得为分区键指定的范围无效:
如果 分区名 的值的格式为“PARTITION=value”,那么在发生错误时该分区名不可用。 所提供的值将标识分区列表子句中出错的分区的开始值或结束值。 无法处理该语句。 |
更正数据分区的无效范围。
sqlcode:-636 sqlstate:56016 |
SQL0637N |
所使用的关键字 关键字 无效。 | 对于带有指示关键字的子句,SQL 语句包含重复的或冲突的规范。 例如:
无法处理该语句。 |
根据重复或冲突子句的规范更正语句。
sqlcode:-637 sqlstate:42614 |
SQL0638N |
因为未指定列定义,所以不能创建表 名称。 | CREATE TABLE 语句不包含任何列定义。
无法处理该语句。 |
将一个或多个列定义添加至该语句。
sqlcode:-638 sqlstate:42601 |
SQL0644N |
在语句 statement-type 中为关键字 keyword 指定的值无效。 | 关键字 关键字 后面跟随着 语句类型 的描述允许的无效值。 对于数值,该值可能超过定义的范围。 对于其他类型,该值不在有效值的定义集中。 | 根据 语句类型 的引用文档来确定哪些是有效值并进行适当的更改。
sqlcode:-644 sqlstate:42615 |
SQL0647N |
缓冲池 缓冲池名 当前不活动。 | 缓冲池 缓冲池名 在当前数据库环境中不活动。 尝试查找另一页大小相同的缓冲池,但在当前数据库环境中没有这样的活动缓冲池。 缓冲池 缓冲池名 是最近定义的,但尚未激活。
无法处理该语句。 |
必须停止并再次启动该数据库,以激活所需的缓冲池。
sqlcode:-647 sqlstate:57003 |
SQL0648N |
不能定义外键,因为它将导致经过多个路径的表 所有者-1.表名-1 到表 所有者-2.表名-2 的连接被删除。 原因码 = reason-code。 |
因为下列其中一种原因码:原因码,所以不能定义外键:
SQL 语句的处理已结束。 |
更正该语句。 再次尝试。
sqlcode:-648 sqlstate:42915 |
SQL0650N |
未执行 ALTER 语句。 原因码:原因码。 | 无法按指定的方式对索引或表执行 ALTER 语句。
原因码更具体地指示了问题根源:
|
按照原因码的指示更正 ALTER 语句以避免出现限制,然后再次发出该语句。
sqlcode: -650 sqlstate: 56090 |
SQL0658N |
语句失败,这是因为不能显式删除、变更或替换名为 name 的对象。 | 尝试显式变更或显式删除 ALTER 语句或 DROP 语句不支持的对象时,将返回此消息。
当由于间接依赖性或其他错误(其中包括以下示例)而不能显式变更、删除或替换对象时,也会返回此消息:
|
通过执行以下故障诊断步骤对此错误作出响应:
sqlcode:-658 sqlstate:42917 |
SQL0659N |
已超出表对象的最大大小。 |
构成表的一个或多个对象已达到其最大大小。 构成表的存储器对象是:
一旦存储器对象已增大至其最大大小,那么不能再进一步扩充。 |
要使对象内的现有空间可用于存储新数据,可执行下列操作:
sqlcode:-659 sqlstate:54032 |
SQL0663N |
分区值的数目对于数据分区 分区名 不正确。 | 在数据分区的 STARTING 或 ENDING 子句中指定的数据分区键限制值的数目不正确。 如果数据分区规范中包含一个 EVERY 子句,那么必须只有一个表分区键列具有 numeric 或 datetime 数据类型。 如果 分区名 的值的格式为“PARTITION=value”,那么在发生错误时该分区名不可用。 所提供的值将标识分区列表子句中出错的分区的开始值或结束值。 | 将在 STARTING 或 ENDING 子句中指定的值的数目与表分区键中的列数相匹配。 或者,更改表分区键中的列数。
sqlcode:-663 sqlstate:53038 |
SQL0667N |
因为表包含带有外键值的行,而在父表的父键中找不到这些外键值,所以不能创建 FOREIGN KEY 名称。 | 因为正在改变的表有最少一行中的外键与父表中的父键值不匹配,所以指示的外键的定义失败。
名称 是约束名(如果指定)。 如果未指定约束名,那么 名称 是 FOREIGN KEY 子句的列列表中指定的第一个列名,后跟三个句点。 无法处理该语句。 未改变指定的表。 |
移除错误的表行并定义外键。
sqlcode:-667 sqlstate:23520 |
SQL0668N |
不允许对表 table-name 进行原因代码 reason-code 的操作。 | 限制对表 表名 的访问。 原因基于下列原因码 原因码:
|
根据原因码对此错误作出响应:
sqlcode:-668 sqlstate:57007 |
SQL0669N |
不能显式删除系统所必需的索引。 | DROP INDEX 语句尝试删除下列操作所需的索引:
不能使用 DROP INDEX 语句删除系统所必需的索引。 无法处理该语句。 未删除指定的索引。 |
如果不想保留主键或唯一约束,那么使用 ALTER TABLE 语句的 DROP PRIMARY KEY 子句或 DROP CONSTRAINT 子句来移除主键或唯一约束。 如果索引只是为了对主键或唯一键进行强制而创建的,那么将删除该索引。 否则,可处理 DROP INDEX 语句。
仅可通过删除表来删除 OID 列的索引。 只能通过首先删除复制型具体化查询表来删除维护复制型具体化查询表所需要的索引。 不能显式删除系统需要的、与表中的一个或多个 XML 列相关联的索引。 数据库管理器将维护这些索引,以便支持表中的 XML 列。 如果不删除该表,就不能删除在 DROP INDEX 语句中指定的索引。 对于 HBase 用户,仅当删除了相关联的 HBase 表时,才能隐式删除该索引。 sqlcode:-669 sqlstate:42917 |
SQL0670N |
语句失败,因为生成的表的行大小或列大小超出对应的行大小或列大小限制:限制。 表空间名称:表空间名称。 产生的行大小或列大小:计算大小。 | 表的行大小是列的字节数之和,其中包括所有结构化类型列或 XML 类型列的直接插入长度。 因此,行大小受总列数、LOB 列总数以及列的数据类型影响。
行大小限制是给定表的最大字节数。 此限制由定义的值(在某些情况下)或变量值(取决于表空间页大小)组成。 在按列组织的表中,列大小限制由一个表页可容纳的未压缩列数据值的最大大小构成。 如果尝试使用下列其中一个语句来创建或修改表,那么会返回此消息:
如果扩展行大小的多维集群 (MDC) 表具有超过 24 个字节的 VARCHAR、VARGRAPHIC 或 VARBINARY 维键时,那么也会返回此消息。 对按列组织的基本表的更改导致关联概要表超过大小限制时,也可能返回此消息。 如果发生这种情况,那么 限制 标记将指示概要表超出限制。 |
要解决此消息所报告的问题,请执行下列步骤:
对于行大小限制:
对于列大小限制:
sqlcode:-670 sqlstate:54010 |
SQL0672N |
不允许对表 表名 执行 DROP 操作。 | 因为下列原因之一使得 DROP 操作失败:
不能执行 DROP 语句。 |
如果在执行 DROP TABLE 语句期间出现问题,那么发出使用了 DROP RESTRICT ON DROP 子句的 ALTER TABLE 语句。 然后重新发出 DROP TABLE 语句。
如果在执行 DROP TABLESPACE 或 DROP DATABASE PARTITION GROUP 语句期间出现问题,那么确保在表空间或数据库分区组中不存在具有 RESTRICT ON DROP 属性的其他表。 下列 select 语句有助于标识表: 标识具有 RESTRICT ON DROP 属性的表之后,对具有 RESTRICT ON DROP 属性的每个表发出使用了 DROP RESTRICT ON DROP 子句的 ALTER TABLE 语句。 然后重新发出 DROP TABLESPACE 或 DROP DATABASE PARTITION GROUP 语句。 sqlcode:-672 sqlstate:55035 |
SQL0673N |
对于标识的约束 名称 的主键列或唯一键列的值,表包含重复的行,所以不能创建主键索引或唯一键索引。 | 因为正在改变的表已经包含具有 PRIMARY KEY 或 UNIQUE 子句列的重复值的行,所以由 名称 标识的约束的主键或唯一键定义失败。
名称 是约束名(如果指定)。 如果未指定约束名,那么 名称 是主键或唯一约束子句中指定的第一个列名,后跟三个句点。 无法处理该语句。 未改变指定的表。 |
在尝试定义主键或唯一键之前,从表中移除错误行。
sqlcode:-673 sqlstate:23515 |
SQL0678N |
字面 literal 必须与列 olumn-name 的数据类型 data-type 兼容。 | 为 STARTING、ENDING 或 EVERY 子句指定的文字 文字 与 列名 列的数据类型不兼容。 该列的数据类型为 数据类型。 在 EVERY 子句中使用的文字的值不能为零或者负数。 当 PARTITION BY 子句指定 datetime 数据类型时,EVERY 子句必须指定一个持续时间。 | 在 STARTING、ENDING 或 EVERY 子句中指定一个有效文字。
sqlcode:-678 sqlstate:53045 |
SQL0680N |
该语句失败,因为对表、视图、表函数或昵称指定的列过多,或者对用户定义的行数据类型指定的字段过多。 | 您可以对表定义的最大列数取决于对象的类型。
您可以对视图、表函数或昵称定义的最大列数以及用户定义的行数据类型所允许的最大字段数是在 SQL 和 XML 限制中指定。 对于表,最大列数受所指定的 LOB 列数的影响。 “CREATE TABLE 语句中的行大小限制”一节包括用于计算表的行大小的公式。 对于联合环境中的关系数据库源,昵称也可能受其数据源上表或视图的最大列数的限制(当这些限制小于 SQL 和 XML 限制中指定的限制时)。 对于下列情况,将返回此消息:
|
请确保列数或字段数不超出限制。
要解决此消息所报告的问题,请执行下列类型的故障诊断操作:
sqlcode:-680 sqlstate:54011 |
SQL0683N |
列、属性、用户定义的类型或函数 数据项 的规范包含不兼容的子句。 | CREATE 语句、ALTER 语句、XMLTABLE 表达式或者引用一般表函数的 SELECT 语句的 typed-correlation 子句中的数据项规范出错。 存在不兼容的规范,例如:“INTEGER 和 FOR BIT DATA”。 如果列的类型为 DB2SECURITYLABEL,那么不兼容的指定内容包括 NOT NULL WITH DEFAULT。 错误的位置由 数据项 给出,如下所示:
无法处理该语句。 |
移除不兼容情况并再次尝试运行该语句。
sqlcode:-683 sqlstate:42842 |
SQL0695N |
无法将提供的值(安全标号)转换为安全标号。 在策略标识为 策略标识 的安全策略中,元素值 元素值 未与序数位置为 序数 的组件中的任何元素相对应。 | INSERT 或 UPDATE 语句对类型为 DB2SECURITYLABEL 的列指定了值。 无法将该值转换为对保护该表的安全策略而言有效的安全标号。 如果 安全标号 值为 *N,那么表示已将实际值写入 db2diag 日志文件。
在组件号指示的组件中,值有问题。 序数位置是指该组件在用来创建该策略的 CREATE SECURITY POLICY 语句的 COMPONENTS 子句中的位置。 指示的元素值未与该组件中的有效元素相对应。 |
检查 INSERT 或 UPDATE 语句,确保在安全标号列中设置的值对于用来保护表的安全策略而言有效。 有时,在对一个表执行 SELECT,而用于保护该表的安全策略与用于保护目标表的安全策略不同时,可能会生成无效值。 只应该在受同一安全策略保护的表之间复制安全标号。
要获取给定策略标识的安全策略名,请使用此 SQL 查询。 请将策略标识替换为错误消息中给出的策略标识号。 sqlcode:-695 sqlstate:23523 |
SQL0696N |
触发器 触发器名 的定义包括相关名或转换表名 名称 的无效使用。 原因码 =Reason-code。 | 触发器定义中无效使用了 名称。 原因码 值标识以下问题:
无法处理该语句。 |
将无效的相关名或转换表名与前导关键字一起除去。 |
SQL0697N |
在用 FOR EACH STATEMENT 子句定义的触发器中,不允许 OLD 或 NEW 相关名。 | 如所定义的那样,触发器包括指定了 OLD 相关名或 NEW 相关名(或两者)的 REFERENCING 子句,以及 FOR EACH STATEMENT 子句。 这些不能一起指定。
无法处理该语句。 |
从 REFERENCING 子句移除任何 OLD 相关名或 NEW 相关名,或者用 FOR EACH ROW 替换 FOR EACH STATEMENT。
sqlcode:-697 sqlstate:42899 |
SQL0707N |
不能使用名称 名称,因为指定的标识是保留给系统使用的。 | 以下列表提供了有关保留名称和限定符的规则:
|
选择未保留的名称。
sqlcode:-707 sqlstate:42939 |
SQL0713N |
专用寄存器 的替换值无效。 | SET 语句中指定的值不是所指示的专用寄存器的有效值,指定的值虽然对于专用寄存器有效但是不能用于当前服务器上,或者指定的值是作为指示符变量结果的 NULL。
无法执行该语句。 |
更正替换值或任何指示符变量。
sqlcode:-713 sqlstate:42815 |
SQL0719N |
用户 授权标识 绑定错误。 程序包 程序包名 已经存在。 |
尝试使用 PRECOMPILE 或 BIND 的 ACTION ADD 选项来添加已经存在的程序包。 “pkgschema.pgkname.pkgversion”组合在 SYSCAT.PACKAGES 目录视图中必须是唯一的。
未创建程序包。 |
确保没有添加重复条目的企图的方法包括:
sqlcode:-719 sqlstate:42710 |
SQL0720N |
试图用版本 pkgversion 替换 pkgschema.pkgname 软件包,而该版本已经存在。 | 尝试使用 ACTION REPLACE REPLVER 选项创建已经存在的版本的程序包。 REPLVER 关键字中指定的版本与 VERSION 预编译选项中指定的版本不同。 VERSION 预编译选项中指定的版本已经存在于目录中。 “pkgschema.pkgname.version”组合在 SYSCAT.PACKAGES 目录视图中必须是唯一的。
常见错误是用户可能相信正在创建的版本就是 REPLVER 关键字中指定的版本。 但情况并非如此。 在 REPLVER 关键字中指定的版本是正在替换的版本的名称。 将要创建的版本是在 VERSION 选项中给予程序的版本。 未创建程序包。 |
确保正在创建的版本不存在。
有两种方法可以解决此问题:
sqlcode:-720 sqlstate:42710 |
SQL0721N |
由于不唯一,无法创建一致性标记 = 0X预示符 的包 pkgschema.pkgname 。 | 尝试使用对程序包不是唯一的一致性标记添加或替换程序包。 组合“pkgschema.pkgname.contoken”已经存在。 这最有可能是由于使用 PRECOMPILE 的 LEVEL 选项来指定一致性标记导致的。
未创建程序包。 |
检查 SYSCAT.PACKAGES 目录表以获取带有指示的一致性标记的现有应用程序的程序包的名称。 重新发出 PREP 或 BIND 命令以便“pkgschema.pkgname.contoken”在目录中是唯一的。 可以使用下列 SQL 语句来查询目录: 如果使用预编译上的 LEVEL 选项,那么重新发出预编译并指定另一 LEVEL 值将更改一致性标记。 建议不要使用 LEVEL 选项;不指定预编译的 LEVEL 选项将确保一致性标记是当前时间戳记值。 |
SQL0722N |
为用户 auth-id 执行 绑定命令时出错。 程序包 程序包名 不存在。 |
针对不存在的程序包发出了绑定或重新绑定。 如果指定了 ACTION REPLACE 并且 REPLVER 选项指定了不存在的版本,那么将发生错误。
未绑定或重新绑定程序包。 |
|
SQL0723N |
触发器 触发器名 中触发 SQL 语句出错。 对该错误返回的信息包括 SQLCODE sqlcode、SQLSTATE sqlstate 和消息标记 标记列表。 | 在触发器 触发器名 的执行期间,该触发器中的 SQL 语句失败。 提供了 sqlcode、sqlstate 和消息标记列表(每个标记由竖线字符分隔)。 消息标记可能被截断。 请参阅 sqlcode 的相应消息以获取该错误的进一步解释。
不能处理触发器和导致执行触发器的原始 SQL 语句。 |
检查与失败的 SQL 语句的 SQLCODE 相关联的消息。 遵循该消息所建议的操作。
sqlcode:-723 sqlstate:09000 |
SQL0724N |
类型为 object-type 的 object-name 的激活将超过间接 SQL 级联的最大级别。 | 当触发器激活另一触发器(可能通过引用约束删除规则)或包含 SQL 的例程调用另一例程时发生间接 SQL 级联。 此级联的深度限制对于触发器为 16,对于例程为 64。
注意以下递归情况:触发器包括直接或间接导致激活相同触发器的触发 SQL 语句,或例程直接或间接调用它本身,这是一种级联形式,如果没有防止级联超出限制的条件,它很可能导致此错误。 对象类型 是 TRIGGER、FUNCTION、METHOD 或 PROCEDURE 的其中之一。 指定的对象名 是将已经在级联的第七级别激活的对象之一。 |
启动由接收到此错误的语句激活或调用的对象。 如果其中一个对象是递归的,那么确保存在防止激活或调用对象超过限制允许的条件。 如果这不是问题的原因,那么跟踪激活或调用的对象的链以确定超出级联限制的链。
sqlcode:-724 sqlstate:54038 |
SQL0727N |
隐式系统操作类型 操作类型 期间出错。 对该错误返回的信息包括 SQLCODE sqlcode、SQLSTATE sqlstate 和消息标记 标记列表。 | 语句或命令的处理导致了数据库管理器隐式执行附加处理。 处理期间遇到错误。 操作类型 显示了尝试的操作:
提供了 sqlcode、sqlstate 和消息标记列表(每个标记由竖线字符分隔)。 消息标记可能被截断。 请参阅 sqlcode 的相应消息以获取该错误的进一步解释。 不能处理导致 操作类型 的原始 SQL 语句或命令,隐式系统操作不成功。 联合系统用户:您可能已经接收到此消息,因为您在传递会话中动态地预编译了 SQL 语句,然后尝试了在关闭该会话之后执行该语句。 |
检查与失败的 SQL 语句的 SQLCODE 相关联的消息。 遵循该消息所建议的操作。
对于无效程序包,可以使用 REBIND 命令在解析错误原因后重新创建错误或显式验证程序包。 对于重新验证数据库对象时发生的故障:
联合系统用户:如果失败的语句是在传递会话中动态预编译的,那么打开另一个传递会话,再次编写并预编译该语句,并在会话仍然打开时执行该语句。 sqlcode:-727 sqlstate:56098 |
SQL0740N |
例程 例程名(特定名称 特定名称)是使用 MODIFIES SQL DATA 选项定义的,该选项在调用例程的上下文中无效。 | 例程 例程名(特定名称 特定名称)是使用 MODIFIES SQL DATA 定义的,所以在下列情况不被允许:
模块函数以及定义时指定了 MODIFIES SQL DATA 选项并且包含复合 SQL(编译型)语句作为函数体的函数只能是复合 SQL(编译型)语句中赋值语句右侧的唯一表达式。 |
确保例程解决方案解析为期望的例程。 将例程从失败的语句移除或以不同于 MODIFIES SQL DATA 的 SQL 访问指示符重新定义例程。
sqlcode:-740 sqlstate:51034 |
SQL0746N |
名为 routine-name 的例程(具体名称 specific-name )失败,原因是该例程在尝试对名为 table-name 的表执行操作 operation 时违反了嵌套 SQL 语句规则。 | 当应用程序调用例程时,如果该例程在访问表时尝试采用的方式与该应用程序或由该应用程序直接或间接调用的例程对表的其他使用有冲突,那么会返回此消息。
标记 操作 的值指示该冲突的性质:
有多种情况可能会返回此消息:
|
再次尝试执行该操作。
如果该操作仍然由于此错误而失败,请执行下列步骤以避免发生此错误:
sqlcode:-746 sqlstate:57053 |
SQL0750N |
此语句失败,因为无法重命名表或列。 | 由于下列其中一个或多个原因,不能重命名 RENAME 语句中的源表。
由于下列其中一个或多个原因,无法重命名 ALTER TABLE 语句中的目标表列。
|
如果错误与 RENAME 语句有关,那么在发出 RENAME 语句之前,请删除依赖于该表的视图、具体化查询表、触发器、SQL 函数、SQL 方法、检查约束、引用约束或 XSR 对象,然后重新创建基于表达式的索引,而不显式引用表名。 可以通过查询目录来确定依赖于此表的对象。
如果此错误与 ALTER TABLE 语句的 RENAME COLUMN 操作有关,那么在目标表是历史记录表的情况下无法直接重命名此列。 可以通过执行下列其中一个操作来重命名该列。
如果某列是使用随机依据生成方法的随机分发表的随机分发键列,那么不需要执行任何操作。 此列是系统生成的列,无法重命名。 sqlcode:-750 sqlstate:42986 |
SQL0751N |
例程 例程名(特定名称 特定名称)尝试执行不被允许的语句。 | 不允许用于实现例程主体的程序发出任何连接语句。 如果例程是函数或方法,那么不允许 COMMIT 和 ROLLBACK(没有 SAVEPOINT 选项)。 如果例程是过程并且是在触发器、函数、方法或动态复合语句内调用的,那么在该过程中不允许 COMMIT 或 ROLLBACK 语句。 | 移除不被允许的语句,然后重新编译程序。
sqlcode:-751 sqlstate:38003, 42985 |
SQL0752N |
当使用 CONNECT 类型 1 设置时,不允许在逻辑工作单元内连接数据库。 | 发出 COMMIT 或 ROLLBACK 语句之前,尝试连接另一个数据库或同一个数据库。 在 CONNECT 1 类环境内不能处理该请求。 |
sqlcode:-752 sqlstate:0A001 |
SQL0773N |
找不到 CASE 语句的条件。 | 在 SQL 例程的例程实体中找到没有 ELSE 子句的 CASE 语句。 未满足 CASE 语句中所指定的任何条件。 | 更改 CASE 语句以处理可能发生的所有情况。
sqlcode:-773 sqlstate:20000 |
SQL0774N |
语句不能在 ATOMIC 复合 SQL 语句内执行。 | 在 ATOMIC 复合 SQL 语句的上下文中遇到了 COMMIT 或 ROLLBACK 语句。 在此上下文中不允许这些语句。 | 移除 COMMIT 或 ROLLBACK 语句或更改上下文以便它不是 ATOMIC 复合语句。
sqlcode:-774 sqlstate:2D522 |
SQL0776N |
游标 游标名 的使用无效。 | 在 SQL 过程中的 FOR 语句上,游标 游标名 被指定为游标名。 不能在 FOR 语句内的 CLOSE、FETCH 或 OPEN 语句上指定游标。 | 移除 CLOSE、FETCH 或 OPEN 语句。
sqlcode:-776 sqlstate:428D4 |
SQL0777N |
不允许嵌套复合语句。 | 不能嵌套 SQL 过程的例程实体中的原子复合语句。 | 确保 SQL 过程不包含嵌套的原子复合语句。
sqlcode:-777 sqlstate:42919 |
SQL0778N |
结束标号 标号 与开始标号不同。 | 在 FOR、IF、LOOP、REPEAT、WHILE 或复合语句的末尾指定的标号 标号 与在语句开头的标号不同。 如果未指定开始标号,那么不能指定结束标号。 | 确保结束标号与 FOR、IF、LOOP、REPEAT、WHILE 及复合语句的开始标号相同。
sqlcode:-778 sqlstate:428D5 |
SQL0779N |
在 GOTO、ITERATE 或 LEAVE 语句上指定的标号 标号 无效。 | 在 GOTO、ITERATE 或 LEAVE 语句上指定了标号 标号。 标号未定义或对于该语句无效。
ITERATE 语句上的标号必须是 FOR、LOOP、REPEAT 或 WHILE 语句的标号。 LEAVE 语句上的标号必须是 FOR、LOOP、REPEAT、WHILE 或复合语句的标号。 必须在 GOTO 语句可以达到的范围内定义 GOTO 语句的标号。
|
在 GOTO、ITERATE 或 LEAVE 语句上指定有效标号。
sqlcode:-779 sqlstate:42736 |
SQL0780N |
当未为复合语句指定 ATOMIC 时,为处理程序指定了 UNDO。 | 为 SQL 过程的复合语句中的处理程序指定了 UNDO。 除非复合语句是 ATOMIC,否则不能指定 UNDO。 | 指定复合语句是 ATOMIC,或在处理程序上指定 EXIT 或 CONTINUE。
sqlcode:-780 sqlstate:428D6 |
SQL0781N |
条件 条件名 未定义或者该定义不在作用域内。 | 在处理程序声明、SIGNAL 语句或 RESIGNAL 语句中指定了条件 条件名,但该条件并非定义于包含条件引用的复合语句的作用域之内,或者该条件无法被识别为已定义的模块条件。
无法处理该语句。 |
通过在包含条件引用的复合语句中使用 DECLARE CONDITION 语句,或者通过在引用该条件的位置处可视的模块中定义条件来定义该条件。 此外,也可以将条件引用替换为特定的 SQLSTATE 值或者移除引用了该条件的处理程序声明、SIGNAL 语句或 RESIGNAL 语句。
sqlcode:-781 sqlstate:42737 |
SQL0782N |
在处理程序中指定的条件或 SQLSTATE 值无效。 |
在 SQL 语句的处理程序中指定了条件或 SQLSTATE 值,但是,由于下列其中一种原因使得它们是无效的:
|
从处理程序中移除该条件、SQLSTATE 值或 SQLCODE 值。
sqlcode:-782 sqlstate:428D7 |
SQL0783N |
在 FOR 语句的 DECLARE CURSOR 语句中指定了重复的列名或未命名的列。 | FOR 语句中的选择列表必须包含唯一的列名。 指定的选择列表包含重复的列名或未命名的表达式。 | 在 FOR 语句中指定的选择列表中指定唯一的列名。
sqlcode:-783 sqlstate:42738 |
SQL0784N |
此语句失败,因为无法删除名为 约束名称 的约束。 | 对于在定义了 BUSINESS_TIME 时间段的情况下隐式生成的约束,无法使用带有 DROP CHECK 或 DROP CONSTRAINT 子句的 ALTER TABLE 语句将其删除。 | 从 ALTER TABLE 语句中移除 DROP CHECK 或 DROP CONSTRAINT 子句。 如果您需要删除此约束,可以使用 ALTER TABLE 语句的 DROP PERIOD 子句删除 BUSINESS_TIME 时间段。
sqlcode:-784 sqlstate:42860 |
SQL0785N |
SQLSTATE 或 SQLCODE 变量的声明或使用无效。 |
SQLSTATE 或 SQLCODE 在 SQL 例程的例程实体中用作变量,但它因下列其中一种原因而无效:
无法处理该语句。 |
声明 SQLSTATE 变量是 CHAR(5),SQLCODE 变量是 INTEGER。 将变量设置为有效值。
sqlcode:-785 sqlstate:428D8 |
SQL0787N |
RESIGNAL 语句不在处理程序中。 | 只能在条件处理程序内使用 RESIGNAL 语句。 | 移除 RESIGNAL 语句,或者转而使用 SIGNAL 语句。
sqlcode:-787 sqlstate:0K000 |
SQL0788N |
未处理语句,因为多次标识了目标表 表名 的某一行以进行更新、删除或插入。 | 当 MERGE 语句的 ON 搜索条件或 UPDATE 语句的 WHERE 搜索条件与具有多个源表引用行的目标表中的单一行匹配时,将返回此消息。 如果目标表中的某一行与多个源表引用行匹配,那么可能会对该目标行多次执行更新或删除操作,而这不受支持。 | 使用下列其中一种方式来响应:
sqlcode:-788 sqlstate:21506 |
SQL0789N |
参数或 SQL 变量 名称 的数据类型在例程、复合 SQL 语句或者游标值构造函数的参数列表中不受支持。 | 发生了下列情况之一:
|
执行适用的下列其中任何一项操作:
sqlcode: -789 sqlstate:429BB |
SQL0796N |
将角色 角色名-1 授权给角色 角色名-2 无效,因为这会导致循环。 | 如果会导致循环,那么不能对角色进行授权。 角色 角色名-1 包含角色 角色名-2(可能通过另一角色),因此不能将其授权给 角色名-2。 | 要根据需要排除导致循环的可能性,请从角色 角色名-1 中或从包含在 角色名-1 中但包含 角色名-2 的任意角色中撤销角色 角色名-2,然后重新提交该语句。
sqlcode:-796 sqlstate:428GF |
SQL0797N |
用不受支持的触发 SQL 语句定义触发器 触发器名。 | 必须使用触发 SQL 语句来定义触发器,此触发 SQL 语句只能包括以下列表中的语句。
触发器可以包含以下控制语句:
AFTER 触发器或 INSTEAD OF 触发器还可以包括下列触发 SQL 语句:
使用 SQL 复合(编译型)语句定义的 BEFORE 触发器还可包括以下触发 SQL 语句:
如果未使用 SQL 复合(编译型)语句定义 BEFORE 触发器,或者使用 SQL 复合(编译型)语句定义了 BEFORE INSERT 触发器并且触发操作是针对 UNION ALL 视图执行的 INSERT 或针对 WITH ROW MOVEMENT 视图执行的 UPDATE,那么触发 SQL 语句不能包括:
在某些情况下,触发器名 不可在消息中使用。 |
检查触发器中的触发 SQL 语句,以找出与此消息中描述的列表不匹配的任何语句并将其移除。
sqlcode:-797 sqlstate:42987 |
SQL0798N |
不能为定义为 GENERATED ALWAYS 的列 列名 指定值。 | 当在表中插入或更新行时,为 GENERATED ALWAYS 列 列名 指定了一值。 除非指定了关键字 DEFAULT,否则,对于插入操作,不应在列列表中(对于更新操作,则是不应在 SET 子句中)指定 GENERATED ALWAYS 列。
未执行 INSERT 或 UPDATE。 |
从列列表或 SET 子句中移除 GENERATED ALWAYS 列,或者将 DEFAULT 指定为列值。
sqlcode:-798 sqlstate:428C9 |
SQL0799W |
忽略了专用寄存器 专用寄存器名称 的 SET 语句,因为数据库服务器上不存在专用寄存器或者为专用寄存器指定的值无效。 | 专用寄存器是应用程序进程的数据库管理器所定义的存储区域。 专用寄存器用于存储可在 SQL 语句中引用的信息。
某些专用寄存器可使用 SET 变量语句来更新。 可对 DB2 客户机或驱动程序进行配置以设置专用寄存器。 当对 DB2 客户机或驱动程序进行配置以设置专用寄存器时,客户机或驱动程序向数据库服务器发送应用程序 SQL 语句的同时发送 SET 变量语句。 当尝试更新专用寄存器但数据库服务器上不存在专用寄存器或者为专用寄存器指定的值无效时,将返回此消息。 当客户机或驱动程序向数据库服务器发送应用程序 SQL 语句的同时发送 SET 变量语句时,无论专用寄存器设置成功还是失败,数据库服务器都会处理应用程序 SQL 语句。 |
如果对 DB2 客户机或驱动程序进行配置以设置专用寄存器,请验证在客户机配置文件 db2dsdriver.cfg 中所指定的专用寄存器设置。
sqlcode:+799 sqlstate:01527 |
SQL0801N |
尝试用零作除数。 | 列函数或算术表达式的处理导致了除零。
无法处理该语句。 对于 INSERT、UPDATE 或 DELETE 语句,未执行任何插入或更新。 |
检查 SQL 语句以确定问题的原因。 如果问题与数据有关,那么需要检查发生错误时所处理的数据。 请参阅 SQL Reference 以了解数据类型的有效范围。
联合系统用户:检查 SQL 语句以确定问题的原因。 如果该问题与数据相关,请检查出错时正在数据源上处理的数据。 sqlcode:-801 sqlstate:22012 |
SQL0802N |
发生算术溢出或其他算术异常。 | 列函数或算术表达式的处理导致算术溢出。
无法处理该语句。 对于 INSERT、UPDATE 或 DELETE 语句,未执行任何插入或更新。 |
检查 SQL 语句以确定问题的原因。 如果问题与数据有关,那么需要检查发生错误时所处理的数据。 请参阅 SQL Reference 以了解数据类型的有效范围。
当列函数不能处理由 SQL 语句返回的值时,也可能返回此错误。 例如,当对其行数比 MAX_LONGINT_INT SQL 限制定义的行数多的表发出 SELECT COUNT 语句时,将导致算术溢出错误。 考虑对具有多于 2147483647 个行的表使用 COUNT_BIG 列函数。 联合系统用户:检查 SQL 语句以确定问题的原因。 如果该问题与数据相关,请检查出错时正在数据源上处理的数据。 请参阅该数据源对应的 SQL Reference,确定数据类型的有效范围。 sqlcode:-802 sqlstate:22003 |
SQL0803N |
INSERT 语句、UPDATE 语句或由 DELETE 语句导致的外键更新中的一个或多个值无效,因为由 索引标识 标识的主键、唯一约束或者唯一索引将表 表名 的索引键限制为不能具有重复值。 | INSERT 或 UPDATE 对象表 表名 被一个或多个 UNIQUE 索引约束为在某些列或列组中具有唯一值。 另外,父表上的 DELETE 语句导致更新从属表 表名(该从属表受一个或多个 UNIQUE 索引约束)中的外键。 唯一索引可能支持在表上定义的主键或唯一约束。 不能处理语句,因为完成所请求的 INSERT、UPDATE 或 DELETE 语句将导致重复的列值。 如果索引在 XML 列上,那么可以从单个 XML 文档中生成索引键的重复值。
另外,如果视图是 INSERT 或 UPDATE 语句的对象,那么在其上定义视图的表 表名 会受到约束。 如果 索引标识 为整数值,那么可以通过发出下列查询来从 SYSCAT.INDEXES 中获取索引名: 其中,“schema”表示 表名 的模式部分,“table”表示 表名 的表名部分。 无法处理该语句。 未更改表。 |
检查 索引标识 标识的索引的定义。
对于 UPDATE 语句,确保指定的操作本身与唯一性约束一致。 如果这样做未发生错误,那么检查对象表内容以确定问题的原因。 对于 INSERT 语句,检查对象表内容以确定在指定的值列表中哪个值违反了唯一性约束。 另一方面,如果 INSERT 语句包含了子查询,那么该子查询寻址的对象表内容必须与对象表内容相匹配以确定问题的原因。 注意,如果该表受安全策略保护,那么表示您的 LBAC 凭证可能不允许您查看导致错误的行。 如果索引在 XML 列上并且语句为 INSERT 或 UPDATE,那么应考虑 XML 文档是否将导致单个 XML 文档中产生重复值。 对于 DELETE 语句,检查用规则 ON DELETE SET NULL 定义的外键上唯一约束的已标识从属表。 此表具有外键列,该外键列包括在不能设置为 NULL(因为该表的列中已存在 NULL)的已标识唯一索引中。 联合系统用户:找出导致请求失败的数据源中的问题,并检查先前列示的条件的索引定义和数据。 sqlcode:-803 sqlstate:23505 |
SQL0804N |
当前请求的应用程序参数无效。 原因码为 原因码。 如果在 SQLDA 中的主机变量或 SQLVAR 无效,那么:主机变量/SQLVAR 号 = 变量号,SQLTYPE = sql-类型,SQLLEN = sql-长度,主机变量/SQLVAR 类型 = 输入或输出。 | 在处理当前请求时出错。
对原因码的解释如下所示:
在带有主机变量的 SQL 语句中,使用主机变量号从该语句或子语句(对于复合 SQL)的起始位置开始计数,以找出无效的主机变量。 对于使用 SQLDA 的语句,SQLVAR 号用于查找无效的 SQLVAR。 对于输入 SQLDA,只对输入主机变量或 SQLVAR 进行计数;对于输出 SQLDA,与此类似。 注意,此号码从 1 开始。 无法处理该语句。 |
检查应用程序中是否有记录的任何错误。 注意,程序员不要尝试修改预编译器输出。
联合系统用户:如果您接收到原因码 102,那么指定一个受支持的数据类型,并重新提交该程序。 sqlcode:-804 sqlstate:07002 |
SQL0805N |
找不到程序包 程序包名。 | 不能完成语句,因为未在目录中找到必要的程序包。
程序包名 的格式为:
此消息(SQLCODE)的可能原因是:
注意,当对给定的 package-schema.package-name 版本标识使用版本标识时,可能有以相同的程序包模式和程序包名定义的程序包,但是未找到正确的程序包,原因是现有程序包与请求的版本或一致性标记不一致。 程序包必须与程序包名的所有三个部分相匹配。 当正在使用多个版本,导致出现此消息的附加原因为:
在所有这些情况下,请求的一致性标记与现有版本的一致性标记不匹配,因此认为未找到程序包。 无法处理该语句。 |
指定正确的程序包名或绑定该程序。 如果正在运行的应用程序未与数据库绑定,请与数据库管理员联系以执行必需的绑定。 确保正在执行的应用程序或对象模块是与生成程序包的预编译和绑定相关联的已编译和链接的修改源代码。
如果设置了 CURRENT PACKAGE PATH,那么确保在 CURRENT PACKAGE PATH 中指定了包括程序包的模式。 可以使用下列 SQL 语句来查询目录以确定是否有程序包的不同版本: 注意 UNIQUE_ID 列与一致性标记相对应。 如果 DB2 实用程序需要重新绑定至数据库,那么当连接至数据库时,数据库管理员可以通过从实例的 bnd 子目录发出下列 CLP 命令之一来完成此操作:
联合系统用户:确保在适用的数据源上绑定联合服务器所必需的程序包。 请参阅《联合系统指南》,以了解有关将程序包绑定至数据源的更多信息。 sqlcode:-805 sqlstate:51002 |
SQL0808N |
CONNECT 语句的语义与其他现有连接的语义不一致。 | CONNECT 语句来源于一个源文件,该源文件预编译成具有与存在连接的源文件不同的连接选项(SQLRULES、CONNECT 类型、SYNCPOINT 或 RELEASE 类型)。 | 确保使用相同的 CONNECT 选项预编译所有的源文件,如果这不能实现,那么在发出第一个 CONNECT 语句之前,调用 SET CLIENT API 来对应用程序进程设置期望的选项。
sqlcode:-808 sqlstate:08001 |
SQL0811N |
标量全查询、SELECT INTO 语句或 VALUES INTO 语句的结果多于一行。 | 下列其中一项导致了该错误:
联合系统用户:联合服务器或数据源可以检测到此情况。 无法处理该语句。 |
确保语句包含适当的条件规范。 如果有,那么可能有导致在仅期望返回一行时却返回了多行的数据问题。
联合系统用户:找出导致请求失败的数据源中的问题,并检查该对象的选择标准和数据。 sqlcode:-811 sqlstate:21000 |
SQL0817N |
因为该 SQL 语句将导致禁止的更新操作,所以不能执行该语句。 |
应用程序尝试执行将导致更新用户数据或子系统目录的 SQL 语句。 因为下列其中一种原因,禁止此操作:
这些 SQL 语句包括 INSERT、UPDATE、DELETE、CREATE、 ALTER、DROP、GRANT 和 REVOKE。 无法执行该语句。 |
如果该应用程序正在作为 IMS 仅查询事务运行,请与 IMS 系统程序员联系,咨询有关更改您的应用程序正在其下运行的事务的仅查询状态的信息。
如果 IMS 或 CICS 应用程序正在尝试远程更新,那么必须将该应用程序更改为作为服务器 DBMS 上的本地应用程序运行,或必须将服务器 DBMS 升级,使之支持两阶段落实。 如果该应用程序正在尝试更新多个位置处的数据,那么必须更改该应用程序,或必须将所涉及的所有 DBMS 都升级,使它们支持两阶段落实。 sqlcode:-817 sqlstate:25000 |
SQL0818N |
发生了时间戳记冲突。 | 预编译时由预编译器生成的时间戳记与绑定时存储在程序包内的时间戳记不同。
此问题可能是由下列各项导致的:
联合系统用户:除了前面列示的原因之外,该问题还可因未在所有适用数据源上绑定必需的程序包而引起。 无法处理该语句。 |
使用与对象模块匹配的程序的绑定文件再次绑定应用程序。 或者,执行与存储在数据库中的程序包相应的程序。
如果正在安装样本数据库,那么记录此消息的编号和文本,然后与技术服务代表联系。 联合系统用户:除了前面列示的操作之外,确保在适用的数据源上绑定联合服务器所必需的程序包。 请参阅《联合系统指南》,以了解有关将程序包绑定至数据源的更多信息。 sqlcode:-818 sqlstate:51003 |
SQL0822N |
SQLDA 包含数据地址或无效的指示符变量地址。 | 应用程序将一个无效的地址置于 SQLDA 中。
无法处理该语句。 |
更正应用程序以将有效的地址置于 SQLDA 中。
sqlcode:-822 sqlstate:51004 |
SQL0840N |
SELECT 列表中返回了太多项。 | SELECT 列表中返回的项数超过可允许的最大值。 SELECT 列表的最大值是 2048(除了在公共表表达式上之外)。 公共表表达式中 SELECT 列表的最大值是 5000。
无法处理该语句。 |
确定是否所有信息都是实际需要的。 (注意,SELECT list * 在 SQL 语句 SELECT * from A, B, C 中返回的项数是所有三个表中的列数之和。) 如果可能,请重写 SQL 语句,以便仅返回必需的信息项。 如果所有信息都是必要的,那么将 SQL 语句分成两条或多条语句。
sqlcode:-840 sqlstate:54004 |
SQL0842N |
已存在与服务器 服务器名 的连接。 | SQLRULES(STD) 有效并且 CONNECT 语句标识现有的 SQL 连接。 |
更正取决于错误:
更正应用程序中的错误,然后再次尝试。 sqlcode:-842 sqlstate:08002 |
SQL0843N |
服务器名未指定现有的连接。 | 语句、命令或 API 指定了不标识该应用程序进程的现有 SQL 连接的服务器名。
使用下列语句时可能发生此情况:
|
更正取决于错误:
更正应用程序中的错误,然后再次尝试。 sqlcode:-843 sqlstate:08003 |
SQL0845N |
在 NEXT VALUE 表达式在序列 序列名称 的当前会话中生成值之前,不能使用 PREVIOUS VALUE 表达式。 | PREVIOUS VALUE 表达式指定了序列 序列名,但是尚未为此序列生成值。 在可以发出序列的 PREVIOUS VALUE 表达式之前,必须在此会话中发出 NEXT VALUE 表达式,以便为此序列生成值。 | 在对会话中的同一序列发出任何 PREVIOUS VALUE 表达式之前,至少应对序列发出一个 NEXT VALUE 表达式。
sqlcode:-845 sqlstate:51035 |
SQL0846N |
标识列或序列对象 对象类型 对象名 的规范无效。 原因码:原因码。 |
对于标识列或序列对象,CREATE 或 ALTER 语句中的属性的规范可能是无效的,原因为下列其中之一:
|
更正语法并重新提交该语句。
sqlcode:-846 sqlstate:42815 |
SQL0857N |
指定了冲突的选项(选项-1 和 选项-2)。 | 指定了冲突的选项。 必须同时指定 option1 和 option2,或者同时不指定这两个选项。
如果在定义列时指定了 IMPLICITLY HIDDEN,那么该列还必须定义为 ROW CHANGE TIMESTAMP 列。 无法执行该语句。 |
根据选项的不同,同时指定这些选项或不同时指定这些选项。
sqlcode:-857 sqlstate:42867 |
SQL0859N |
对“事务管理器数据库”访问失败,SQLCODE 为 SQLCODE。 |
应用程序是用 SYNCPOINT(TWOPHASE) 预编译的,且需要“事务管理器数据库”来协调两阶段落实。 “事务管理器数据库”不可用的原因可能包括下列各项:
|
可能的操作:
sqlcode:-859 sqlstate:08502 |
SQL0863W |
已成功进行连接,但只应使用单字节字符。 | 服务器数据库和客户机应用程序正在将代码页用于不同的语言类型,并且不能保证在 7 位 ASCII 范围之外的任何字符(所有代码页中只存在 7 位 ASCII 范围中的字符)。 例如,连接可能是在日文代码页与 Latin1 代码页之间进行的,但在 Latin1 代码页中,将没有日文字符可用,因此应避免所有这些字符(但是,英文字符则没问题)。
联合系统用户:原因可能是:
|
不要提交使用对于应用程序代码页和数据库代码页不是公共的字符的 SQL 语句或命令。
联合系统用户:不要提交使用对于客户机系统、联合系统和数据源不是公共的字符的 SQL 语句或命令。 sqlcode:+863 sqlstate:01539 |
SQL0864N |
引用约束 约束名 尝试了修改表 表名 中由全查询内的 SQL 数据更改语句修改的行。 | 在 FROM 子句中指定了 SQL 数据更改语句,但是 SQL 数据更改语句的底层目标基本表具有将修改同一个表的引用约束。 这是不允许的。
无法处理该语句。 |
避免在 FROM 子句中使用 SQL 数据更改语句,或者更改引用约束以便使它不会修改是 SQL 数据更改语句的目标的表。
sqlcode:-864 sqlstate:560C6 |
SQL0865N |
m_database 值无效。 | 在数据库管理器配置中选择作为 tm_database 的数据库无效。 该数据库必须处于 DB2 V2.1 或更高版本,并且不能是通过 DRDA 协议(即,通过 DB2 Connect)访问的数据库。
无法执行该语句。 |
sqlcode:-865 sqlstate:08001 |
SQL0866N |
数据服务器驱动程序或数据服务器客户机终止了与名为 database-name 的数据库的连接,因为 db2dsdriver.cfg 文件的 <alternategroup> 部分无效。 | 如果与数据库的连接失败,您可以指定多个备用数据库服务器,以便自动客户机重新路由连接到它们,使用 db2dsdriver.cfg 文件的 <alternategroup> 部分。 此功能在 DB2 for Linux, UNIX, and Windows 以及 DB2 for z/OS 服务器中受支持。
在连接到 DB2 for z/OS 数据库服务器时,对 db2dsdriver.cfg 文件的 <alternategroup> 部分的内容有一些限制。 如果名为 db_A 的数据库位于 DB2 for z/OS 数据库服务器上,那么在 db_A 的 <alternategroup> 部分中不能有超过一个 <database> 条目。 出现下列其中一种情况时,会返回此消息:
|
在 db2dsdriver.cfg 文件中,修改与指定的数据库 database-name 相关的 <alternategroup> 部分,以便这些条目和部分符合 <alternategroup> 支持限制:
sqlcode:-866 sqlstate:08001 |
SQL0868N |
对连接已存在的服务器尝试了使用 USER/USING 子句的 CONNECT。 | 存在与服务器的当前或休止连接,使用 USER/USING 子句连接(CONNECT)到此服务器的尝试无效。 |
可能的操作:
sqlcode:-868 sqlstate:51022 |
SQL0873N |
不能在同一条 SQL 语句中引用使用不同编码方案编码的对象。 | 未使用同一编码方案定义 SQL 语句中引用的所有表、SQL 函数和 SQL 方法。
在下列情况下可能出现此状况:
|
更正 SQL 语句以便只引用使用同一编码方案的对象。
sqlcode:-873 sqlstate:53090 |
SQL0874N |
所有参数的 CCSID 都必须与例程的 PARAMETER CCSID 相匹配。 | 例程的所有参数必须与例程本身使用同一编码方案。 如果对参数指定了 CCSID,那么它必须与对例程隐式或显式指定的 PARAMETER CCSID 选项相匹配。 | 从参数中移除 CCSID 选项或更改该语句以使从头到尾指定相同的 CCSID 值。
sqlcode:-874 sqlstate:53091 |
SQL0880N |
在此上下文中,SAVEPOINT 保存点名 不存在或无效。 | 发出 RELEASE 或 ROLLBACK TO SAVEPOINT 保存点名 语句时出错。 不存在具有该名称的保存点,或它是在当前原子执行上下文外部建立的。
无法处理该语句。 |
在语句中更正保存点的名称,并重新发出该语句。
sqlcode:-880 sqlstate:3B001 |
SQL0881N |
已经存在具有名称 保存点名 的 SAVEPOINT,但是,不能再使用此保存点名。 | 在 SAVEPOINT 语句中已使用名称 保存点名。 不能再使用该保存点名,因为至少有一个使用此名称的 SAVEPOINT 语句也指定了 UNIQUE 关键字,它要求该名称必须是唯一的。
无法处理该语句。 未设置新的保存点。 具有同一名称的旧保存点仍然存在。 |
为此保存点选择另一个名称,并重新发出 SAVEPOINT 语句。 如果必须再使用此现有保存点名,那么发出 RELEASE SAVEPOINT 语句以释放现有的保存点。 但是,您应该知道,RELEASE SAVEPOINT 语句还会释放自建立 指定的保存点以来在事务中所建立的任何保存点。 有关更多信息,请参阅 SQL Reference。
sqlcode:-881 sqlstate:3B501 |
SQL0882N |
保存点不存在。 | 发出 ROLLBACK TO SAVEPOINT 语句时出错。 当没有任何现有的保存点时,不允许发出未指定特定保存名的 ROLLBACK TO SAVEPOINT。
无法处理该语句。 |
发出另一语句,或者尝试用 ROLLBACK 语句回滚整个事务。
sqlcode:-882 sqlstate:3B502 |
SQL0900N |
应用程序状态出错。 不存在数据库连接。 |
不存在数据库连接。 这可能是由下列其中一个原因引起的:
|
通过(使用 CONNECT TO 或 SET CONNECTION)切换至现有的一个休眠连接、通过(使用 CONNECT)建立新连接或者通过成功切换至可信连接中的另一个用户来重新建立当前连接。
sqlcode:-900 sqlstate:08003 |
SQL0901N |
SQL 语句或命令由于数据库系统错误而失败。 (原因:原因)。 | 在许多场景中,有可能返回此消息。 以下是两个有可能返回此消息的场景示例:
在某些情况下,虽然这次尝试执行 SQL 语句失败,但将来尝试执行此 SQL 语句或其他语句有可能成功。 运行时标记 原因 可能为空,也可能包含仅供 IBM 软件支持人员参考的英文文本。 |
通过执行以下故障诊断步骤对此错误作出响应:
执行上述故障诊断步骤后,如果仍发生错误,请与 IBM 软件支持人员联系以寻求帮助:
sqlcode:-901 sqlstate:5UA0L 和 58004 |
SQL0902C |
发生了系统错误。 无法处理后续的 SQL 语句。 IBM 软件支持原因码:原因码。 | 当数据库管理器遇到关键错误(例如严重的操作系统错误)或者访问存储介质时发生错误(这可能导致数据库不再可用)时,将返回此消息。 数据库管理器可能会在不同的场景中遇到操作系统错误或严重的介质错误。 以下是可能返回此消息的场景的一个示例:
运行时标记 原因码 有时可能为空,并且仅用于为 IBM 软件支持人员提供帮助。 |
作为对此消息的响应,执行以下故障诊断步骤:
执行上述故障诊断步骤后,如果仍发生错误,请与 IBM 软件支持人员联系以寻求帮助:
联合系统用户:找出导致请求失败的数据源中的问题,并对该数据源执行必需的诊断步骤。 数据源的问题确定过程各有不同,因此参阅适用的数据源手册。 sqlcode:-902 sqlstate:58005 |
SQL0903N |
COMMIT 语句失败,事务已回滚。 原因码:原因码。 | 一个或多个参与当前工作单元的服务器无法准备数据库,因此无法进行落实。 COMMIT 语句已失败,事务已回滚。 如果只有一台服务器参与当前工作单元,那么表示可能已落实该事务。
可能的原因码是:
|
如果丢失了与数据库的连接,那么重新建立连接。 如果故障与连接无关,那么参阅远程系统上的错误诊断日志以确定故障的性质以及可能需要的操作。 重新运行应用程序。
sqlcode:-903 sqlstate:40504 |
SQL0904N |
执行不成功是由不可用的资源导致的。 原因码:原因码,资源类型:资源类型,资源名称:资源名称。 | 因为类型为 资源类型 的资源 资源名称 当时不可用,所以不能执行 SQL 语句,资源不可用的原因由 原因码 指示。 请参阅 DB2 MVS 版的“问题确定”文档,以获取有关资源类型代码的说明。 | 验证不可用的资源的标识。 要确定资源不可用的原因,请参阅指定的 原因码。
sqlcode:-904 sqlstate:57011 |
SQL0905N |
由于超过资源限制,因此执行不成功。 资源名称 = 资源名称,限制 = 限制量-1 CPU 秒(限制量-2 服务单元)由 限制源 派生的。 | 因为超过资源限制,SQL 语句的执行被终止。
超过限制的资源的名称是 资源名称。 它也是资源限制规范表中的列的名称,限制就是从该表派生出来的。 在 CPU 秒数中,超过的限制是 限制量-1,在服务单元中,它是 限制量-2。 资源名称 可能是 ASUTIME,它是每条 SQL 语句所允许的 CPU 秒数。 允许的最大 CPU 秒数为 限制量-1。 最大服务单元数为 限制量-2。 用来派生限制量的源为 限制源,它是资源限制规范表或“系统参数”的名称。 如果该源是系统参数,那么资源限制规范表不包含可用的条目或访问该表时发生错误。 在任一情况下,该限制都是从安装(系统)参数中获得的。 |
确定为何此 SQL 语句需要这样长的时间并执行适当的操作。 考虑简化该 SQL 语句、重构表和索引、或者与负责维护该资源限制规范表的安装组联系。
接收此返回码的应用程序可以执行附加的 SQL 语句。 sqlcode:-905 sqlstate:57014 |
SQL0906N |
不能执行 SQL 语句,因为先前的错误导致此函数被禁用。 | 执行 SQL 语句失败,因为先前的错误导致所请求的函数被禁用。 如果应用程序拦截到一个异常结束(例如,由 PL/I 程序中的 ON ERROR 条件引起)时继续执行 SQL 语句,可能就会发生这种情况。 如果 DB2 CICS 事务遇到创建线程错误时仍继续发出 SQL 请求而不先发出 SYNCPOINT ROLLBACK,也可能会发生这种情况。 | 一般情况下,应用程序一旦收到此返回码就应终止。 该应用程序执行其他 SQL 语句的所有后续尝试也将失败并带有相同的返回码。 对于 DB2 CICS 事务,如果 SQLCA 中的 SQLERRP 字段中包含模块名 DSNCEXT1,那么该事务可能会发出 SYNCPOINT ROLLBACK 并继续处理。 如果该事务选择 ROLLBACK 并继续处理,那么它必须能更正最初导致发生创建线程错误的那些情况。
sqlcode:-906 sqlstate:24514, 51005, 58023 |
SQL0907N |
试图通过约束或触发器 name 修改 MERGE 语句的目标表 table-name 。 | MERGE 语句导致激活了约束或触发器 名称,该约束或触发器尝试对还作为该 MERGE 语句目标表的表 表名 或位于同一个表层次结构中的表执行更新、插入或删除。 这是不允许的。 | 更改 MERGE 语句以移除导致激活约束或触发器的操作,或改变带有约束或触发器的表以移除对目标表的引用。
sqlcode:-907 sqlstate:27000 |
SQL0908N |
bind-type 错误,不允许使用 auth-id 权限 BIND、REBIND 或 AUTO_REBIND 操作。 |
对于 BIND 和 REBIND,不允许指示的授权标识对计划或程序包执行指示的 绑定类型。 在资源限制规范表(RLST)中的一个条目禁止使用授权标识或所有授权标识来进行绑定和重新绑定。 对于 AUTO-REBIND,用于控制 AUTO-REBIND 操作的系统参数被设置为不允许 AUTO-REBIND。
|
如果应该允许绑定所指示的授权标识,那么更改活动的 RLST 表中的该条目。 如果禁用 AUTO-REBIND 操作,那么在重新执行程序包之前,重新绑定该程序包。
sqlcode:-908 sqlstate:23510 |
SQL0909N |
对象已删除。 | 应用程序(1)删除了表,然后尝试访问它,或者,(2)删除了索引,然后尝试使用该索引来访问其对象表。 | 必须更正应用程序的逻辑,以便使它在被删除之后,不要尝试访问或使用对象。
删除应用程序中的索引是相当危险的,因为没有方法可以确定(通过 BIND 或 REBIND)为该应用程序实际生成的计划是否使用特定的索引来访问其对象表。 sqlcode:-909 sqlstate:57007 |
SQL0910N |
SQL 语句不能访问在其上的修改被暂挂的对象。 | 应用程序尝试访问同一工作单元中的对象,在该工作单元中:
或者,应用程序发出了一个 SQL 语句来尝试访问一个 WLM 对象,而对该对象进行的修改却处于暂挂状态。 该 SQL 语句可能是下面的其中一个:
联合系统用户:除了前面列示的原因之外,还可能存在导致无法访问该对象的其他数据源特定限制。 不能处理 SQL 语句。 |
修改应用程序,以使在执行修改的同一工作单元里没有尝试访问对象。 总的说来,隔离不同工作单元中的“数据定义语言”(DDL) 语句比隔离访问相同对象的“数据操作语言”(DML) 语句要好。
在可以成功地处理失败的语句之前,必须落实或回滚工作单元。 如果落实的修改导致要删除对象,那么可能必须重新创建该对象才能使失败的 SQL 语句处理成功。 如果对象是在 SAVEPOINT 内修改的,那么修改应用程序,以使在应用程序发出 ROLLBACK TO SAVEPOINT 语句之后,它不会尝试访问该对象。 访问已修改对象且在 ROLLBACK TO SAVEPOINT 时处于打开状态的任何游标将不可访问。 修改应用程序,以使它关闭该游标。 如果涉及已创建的 NOT LOGGED 临时表或者已声明的 NOT LOGGED 临时表的插入、删除或更新语句失败,那么该表中的所有行都被删除。 在发生故障时,针对该表打开的任何游标都将不可访问并且应该由应用程序关闭。 如果一个 ALTER TABLE … 由于 ALTER TABLE 暂挂,DETACH PARTITION 失败 … ATTACH PARTITION,使用两个不同的工作单元来执行这两个操作。 如果该 SQL 语句尝试访问一个可信上下文对象,那么稍后重新发出该语句。 如果该 SQL 语句尝试访问一个 WLM 对象,那么稍后重新发出该语句。 联合系统用户:如果前面的操作无法解决该问题,那么找出请求,并确定数据源还存在哪些约束会导致无法访问该对象。 确保应用程序未违反任何那些约束。 sqlcode:-910 sqlstate:57007 |
SQL0911N |
因为死锁或超时,所以当前事务已回滚。 原因码为 原因码。 | 当前工作单元参与了未解决的对象争用,因此必须回滚。
原因码如下所示:
应用程序已回滚至上一次 COMMIT 操作。 |
必须再次输入与工作单元相关的更改。
为了帮助避免死锁或锁定超时,对长时间运行的应用程序或有可能遇到死锁的应用程序频繁发出 COMMIT 操作(如果有可能)。 联合系统用户:联合服务器或数据源处可能会发生死锁。 没有检测跨越数据源并潜在地跨越联合系统的死锁的机制。 有可能标识使请求失败的数据源(请参阅 Problem Determination Guide 以确定哪一个数据源使 SQL 语句的处理失败)。 当处理 SQL 语句的某些组合时,通常会发生死锁或者预期会发生死锁。 建议您设计应用程序来尽可能避免死锁。 如果因为排队阈值(例如,CONCURRENTDBCOORDACTIVITIES 阈值)太小而进入死锁状态,请增大排队阈值。 如果因为应用程序正在等待由工作负载管理器许可控制管理的资源而进入死锁状态,请增大正在其中执行应用程序的最后一个语句的服务类的 resourceshare。 如果要帮助避免(涉及工作负载管理器许可控制管理的)资源的死锁,请关闭不再需要的 SQL 游标以减小应用程序中并行执行的 SQL 语句数。 如果目录成员处于再同步状态,请重试该请求。 目录成员必须先与整个集群再同步,然后它才能允许处理各个请求。 如果目录成员正在执行数据库更新操作,请重试该请求。 sqlcode:-911 sqlstate:40001 |
SQL0912N |
已经达到数据库的锁定请求的最大数目。 原因码 = 原因码 | 由于用于锁定请求的内存不足,因此已达到数据库的最大锁定数。
原因码指示已达到的内存限制的类型:
无法处理该语句。 |
在提交其他 SQL 语句前,应用程序应该提交 COMMIT 或 ROLLBACK 语句。 请考虑增大原因码所指示的数据库配置参数的值,以支持更多锁定请求。
sqlcode:-912 sqlstate:57011 |
SQL0913N |
死锁、超时或写冲突导致执行事务未成功。 原因码为 原因码。 | 事务发出的请求涉及到未解决的对象争用情况,执行失败。
原因码如下所示:
根据数据库服务器或客户机的版本和平台的不同,此消息的正文和运行时标记可能有所变化。 |
sqlcode:-913 sqlstate:57033 |
SQL0917N |
绑定程序包失败。 | 发生了阻止创建程序包的错误。
此 SQLCODE 可能会在绑定处理或落实处理期间发出。 如果是在落实处理期间发出,那么会回滚对数据库作出的所有更改。 如果是在绑定处理期间发出,那么只有程序包创建操作会失败,在该逻辑工作单元内作出的其他更改仍然可落实。 |
此问题通常是由于一个或多条 SQL 语句因错误而未被绑定引起的。
确定哪些语句导致错误并纠正这些语句。 重新发出该命令以创建程序包。 sqlcode:-917 sqlstate:42969 |
SQL0918N |
应用程序必须执行回滚操作。 | 工作单元已在数据库中回滚,但此工作单元中涉及的其他资源管理器可能未回滚。 为了确保此应用程序的完整性,在应用程序发出回滚之前,所有 SQL 请求都会被拒绝。 | 在应用程序发出回滚之前,所有 SQL 请求都将被拒绝。 例如,在 CICS 环境中,这将是 CICS SYNCPOINT ROLLBACK 命令。
sqlcode:-918 sqlstate:51021 |
SQL0920N |
不能从其他数据库客户机系统中访问数据库客户系统的数据。 | 已将工作站配置为客户机或具有本地客户机的服务器。 其他工作站不能共享在此系统中创建的任何数据库。
不能处理该函数。 |
仅从服务器工作站中请求数据。
sqlcode:-920 sqlstate:57019 |
SQL0925N |
SQL COMMIT 对应用程序执行环境无效。 |
在下列情况下,不允许 COMMIT:
|
通过执行下列操作之一来更正问题:
sqlcode:-925 sqlstate:2D521 |
SQL0926N |
SQL ROLLBACK 对于应用程序执行环境无效。 |
在下列情况下,不允许 ROLLBACK:
|
sqlcode:-926 sqlstate:2D521 |
SQL0930N |
没有足够的存储空间可用来处理语句。 | 请求了需要其他内存页的数据库,但是,没有更多页可用于数据库管理器。
无法处理该语句。 |
可能的解决方案包括:
如果这些解决方案无法解决问题,那么可能需要考虑更改例程的定义。 sqlcode:-930 sqlstate:5UA0L 和 57011 |
SQL0931C |
发生操作系统文件表溢出。 无法处理后续的 SQL 语句。 | 已达到操作系统的限制。 应用程序不允许发出附加的 SQL 语句。 数据库被标记为需要恢复,并且阻止使用数据库的所有应用程序访问该数据库。 | 终止使用数据库的所有应用程序。 重新启动数据库。
要帮助阻止问题的再次发生:
sqlcode:-931 sqlstate:58005 |
SQL0949N |
UTL_FILE 模块例程尝试执行无效的操作系统操作。 操作系统错误:错误文本。 | UTL_FILE 模块例程尝试执行的操作导致操作系统返回 错误文本 所指示的错误。 | 请参阅操作系统错误消息信息,以确定如何解决 错误文本 所报告的问题。
sqlcode:-949 sqlstate:58024 |
SQL0950N |
不能删除表或索引,因为当前正在使用。 | 当打开的游标正在使用表或索引时,不能发出 DROP TABLE 或 DROP INDEX 语句。
无法处理该语句。 未删除表或索引。 |
关闭任何需要的游标并重新提交该语句。
sqlcode:-950 sqlstate:55006 |
SQL0951N |
类型为 object-type 的对象 object-name 无法更改,因为它目前正被同一应用程序进程使用。 | 当一个对象被锁定或者正在使用时,不能对该对象发出 ALTER、SET INTEGRITY 或 TRUNCATE 语句。
无法处理该语句。 未改变该对象。 |
关闭那些直接或间接依赖于对象 对象名 的任何游标并重新提交该语句。
sqlcode:-951 sqlstate:55007 |
SQL0952N |
由于中断而取消处理。 | 用户可能按了中断键序列。
终止语句处理。 在发生终止之前,可能已对数据库应用了某些更改,但未落实。 如果由于查询超时而导致调用级接口(CLI)发出中断命令,那么您也会接收到此错误。 例如:如果应用程序使用 SQLSetStmtAttr() 函数将 SQL_ATTR_QUERY_TIMEOUT 语句属性配置为一个非零值,且 SQL 语句或 XQuery 表达式未在指定时间内完成,那么 CLI 就会发出中断指令以取消执行并返回到应用程序。 联合系统用户:数据源也可能会检测到此情况。 |
继续执行应用程序。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 如果您想阻止 CLI 在发生查询超时的情况下发出中断指令,那么可以通过在 db2cli.ini 文件中设置 QUERYTIMEOUTINTERVAL=0 来禁止查询超时行为。 除非在服务器中设置了死锁或锁定等待超时值,否则禁止查询超时行为就会允许查询完成运行。 sqlcode:-952 sqlstate:57014 |
SQL0954C |
应用程序堆中没有足够的存储空间可用来处理语句。 | 使用了应用程序的所有可用内存。
无法处理该语句。 |
接收到此消息时,终止应用程序。 如果 applheapsz 数据库配置参数已设置为 AUTOMATIC,您将需要增大 APPL_MEMORY 数据库配置设置的值,或者增大 INSTANCE_MEMORY 数据库管理器配置设置的值。 否则,请增大 applheapsz 数据库配置参数的值以允许更大的应用程序堆。
更新配置参数时,建议更改这些参数的值。每次将它们增大当前大小的 10%,直到错误情况得到解决为止。 要更改 applheapsz,请输入一个类似如下的命令,该命令对数据库 样本 将 applheapsz 设置为 4000: 如果所有相关联的配置参数都设置为 AUTOMATIC 或 COMPUTED,那么实例的内存需求将超过机器上配置的内存量。 可以采用的解决方案包括减少数据库工作负载、启用连接集中器功能部件或者向机器添加更多内存。 sqlcode:-954 sqlstate:57011 |
SQL0955C |
不能分配排序内存来处理语句。 原因码:原因码。 | 就像原因码所指示的那样,数据库代理程序没有足够虚拟内存可用,无法进行排序处理:
无法处理此语句,但是可以处理其他 SQL 语句。 |
要对此消息作出响应,请执行与每个原因码相对应的操作:
sqlcode:-955 sqlstate:57011 |
SQL0956C |
数据库堆中没有足够的存储空间可用来处理语句。 | 使用了数据库的所有可用内存。
无法处理该语句。 |
接收到此消息时,终止应用程序。
增大数据库配置参数 dbheap 的值以允许更大的数据库堆。 如果 I/O 服务器数接近上限,那么减小此数目可能也会有所帮助。 如果 dbheap 数据库配置参数已设置为 AUTOMATIC,您将需要增大 DATABASE_MEMORY 数据库配置设置的值,或者增大 INSTANCE_MEMORY 数据库管理器配置设置的值。 更新配置参数时,建议更改这些参数的值。每次将它们增大当前大小的 10%,直到错误情况得到解决为止。 要更改 dbheap,请输入一个类似如下的命令,该命令对数据库样本将 dbheap 设置为 2400: 要在已与数据库断开连接的情况下更改 dbheap,请输入一个类似如下的命令: 如果所有相关联的配置参数都设置为 AUTOMATIC 或 COMPUTED,那么实例的内存需求将超过机器上配置的内存量。 可以采用的解决方案包括减少数据库工作负载、启用连接集中器功能部件或者向机器添加更多内存。 sqlcode:-956 sqlstate:57011 |
SQL0958C |
已达到最大打开文件数。 | 已经达到数据库可用的最大文件句柄数。
无法处理该语句。 |
增大影响在数据库位置上所允许的打开文件最大数目的任何参数。 这包括增大配置参数(maxfilop)的值以允许将更多文件句柄用于实例,以及终止其他会话以减少使用的文件句柄数。
sqlcode:-958 sqlstate:57009 |
SQL0959C |
在服务器的通信堆中没有足够的存储空间可用来处理语句。 | 已使用在服务器通信堆中的所有可用内存。
不能处理该命令或语句。 |
接收到此消息时,终止应用程序。 增大服务器工作站数据库管理器配置文件中通信堆 ( comheapsz) 参数的大小。
注意:此消息仅适用于版本 2 之前的 DB2 发行版。 sqlcode:-959 sqlstate:57011 |
SQL0960C |
在使用以下名称或标识表空间列表的表空间中创建的对象已达到最大数目。 | 由于已达到该表空间的最大对象数,因此无法在该表空间中创建新对象。 | 指定另一个表空间以便在其中创建该对象或表。 如果该表空间是 SYSTEM TEMPORARY 表空间,那么表示已使用了太多的并发临时表。
sqlcode:-960 sqlstate:57011 |
SQL0964C |
数据库的事务日志已满。 | 已使用事务日志中的所有空间。
如果使用具有辅助日志文件的循环日志,那么尝试分配和使用这些日志。 当文件系统没有更多空间时,不能使用辅助日志。 如果使用归档日志,那么文件系统不提供空间来包含新日志文件。 当数据库几乎已用完所有可能的日志序号时,也会返回此消息。 数据库管理器使用称为日志序号 (LSN) 的唯一标识来标识数据库日志记录。 当事务导致写入数据库日志时,数据库将使用新的 LSN 值。 应用程序无法执行任何导致数据库写入日志记录的事务。 无法处理该语句。 |
在接收到此消息(SQLCODE)时,执行 COMMIT 或 ROLLBACK,或再次尝试执行该操作。
如果并发应用程序正在更新数据库,那么再次尝试执行该操作。 另一个应用程序完成事务后,可能会释放日志空间。 发出更频繁的落实操作。 如果事务还未落实,那么当落实事务时,可能会释放日志空间。 设计应用程序时,应考虑何时落实更新事务,以防止发生日志已满的情况。 如果发生死锁,那么更频繁地对它们进行检查。 这可以通过减小数据库配置参数 DLCHKTIME 来实现。 这将检测到死锁,并且很快解决(通过 ROLLBACK),这将释放日志空间。 如果经常发生这种情况,那么增大数据库配置参数以允许更大的日志文件。 更大的日志文件需要更多空间,但是减少了应用程序再次尝试执行该操作的需要。 可能需要调整的事务配置参数是 LOGFILSIZ、LOGPRIMARY 和 LOGSECOND。 如果正在安装样本数据库,那么删除它并再次安装样本数据库。 如果由于数据库几乎用完所有可能的 LSN 值而返回此消息,那么您可以通过执行以下操作将 LSN 值重置为零:
sqlcode:-964 sqlstate:57011 |
SQL0965W |
在此工作站上的消息文件中没有与 SQL 警告 sqlcode 相对应的消息正文。 该警告是从模块 名称 中返回的,原始标记为 标记列表。 | 数据库服务器将代码 sqlcode 返回给应用程序。 警告代码与此工作站上的 DB2 消息文件中的消息不对应。 | 请参阅数据库服务器文档以了解有关所指定 SQLCODE 的更多信息。 |
SQL0966N |
找不到或打不开“数据库连接服务”目录中指定的错误映射文件 名称。 |
下列其中一个条件为真:
检索不到错误映射数据。 |
从打开文件的应用程序中释放文件,或者重新安装或复原原始文件。
sqlcode:-966 sqlstate:57013 |
SQL0967N |
“数据库连接服务”目录中指定的错误映射文件 名称 的格式无效。 | 当程序读取错误映射文件时出错。
检索不到错误映射数据。 |
更正错误映射文件中的所有语法错误。
sqlcode:-967 sqlstate:55031 |
SQL0968C |
文件系统已满。 | 包含数据库的其中一个文件系统已满。 此文件系统可能包含数据库目录、数据库日志文件或表空间容器。
在 DB2 pureScale 环境中,如果您正在将成员添加到数据库管理器实例,那么没有足够的磁盘空间来创建其他成员文件。 无法处理该语句。 |
通过擦除不想要的文件来释放系统空间。 不要擦除数据库文件。 如果需要附加空间,那么可能有必要删除标识为不必需的表和索引。
在基于 UNIX 的系统中,此磁盘满状态可能是由于超过当前用户标识所允许的最大文件大小所导致的。 使用 chuser 命令来更新 fsize。 可能必须进行重新引导。 当容器大小不相同时,可能会导致出现磁盘已满的情况。 如果文件系统中有充足的空间,那么删除该表空间并使用大小相等的容器重新创建。 如果无法处理的语句引用了 LOB 数据类型:
在 DB2 pureScale 环境中,请通过擦除不需要的文件释放系统空间或者向文件系统添加容量,然后重新运行此命令。 sqlcode:-968 sqlstate:57011 |
SQL0969N |
在此工作站上的消息文件中没有与 SQL 错误 错误 相对应的消息文本。 该错误是从模块 名称 中返回的,原始标记为 标记列表。 | 数据库服务器将 SQLCODE 错误 返回给应用程序。 该错误代码与此工作站上的 DB2 消息文件中的消息不对应。 | 请参阅数据库服务器文档以了解有关所指定 SQLCODE 的信息。 执行数据库服务器文档中指定的操作来修正此问题。
联合系统用户:找出导致请求失败的数据源中的问题。 在数据源上的适用手册中查找 错误。 如果该问题与数据相关,那么可能有必要检查出错时正在数据源上处理的数据。 |
SQL0970N |
系统尝试写入只读文件。 | 数据库使用的文件被标记为只读,或不存在。 数据库需要对此文件进行写访问。
无法处理该语句。 |
接收到此消息(SQLCODE)后就终止应用程序。 确保所有数据库文件都允许读和写访问权。 检查指定文件名中不必要的空格。
sqlcode:-970 sqlstate:55009 |
SQL0972N |
数据库驱动器中是不正确的软盘。 | 驱动器中的软盘不是数据库软盘。
无法处理该语句。 |
将所需的软盘放入驱动器中。 如果应用程序开始使用驻留在软盘中的数据库,那么不要取出软盘。
sqlcode:-972 sqlstate:57019 |
SQL0973N |
在 堆名 堆或堆栈中没有足够的存储空间可用来处理语句。 | 已使用此堆的所有可用内存。
无法处理该语句。 |
接收到此消息时,终止应用程序。 修改 堆名称 堆值以增大堆或堆栈大小。
如果 堆名称 设置为 AUTOMATIC,请增大 appl_memory database 数据库配置设置、database_memory 数据库配置设置或 instance_memory 数据库管理器配置设置。 否则,请修改 堆名称 堆值以增大堆大小。 程序包高速缓存和目录高速缓存具有软限制,对于这些高速缓存,您将需要增大 database_memory 数据库配置设置或 instance_memory 数据库管理器配置设置。 如果 堆名称 设置为 BigSQL IO,那么已超过 Big SQL Java 阅读器和写程序内存(java.lang.OutOfMemoryError 或 java.lang.StackOverflowError)。 在这种情况下,管理 JVM 的受防护方式进程 (FMP) 将标记为不稳定,并且将创建新的 FMP 来处理任何对 Big SQL Java 阅读器和写程序 JVM 的新请求。 如果频繁返回此错误,那么可能未正确配置系统来处理资源需求。 Java 阅读器和写程序 FMP 的缺省最大内存量 (-Xmx) 以 instance_memory 的百分比形式进行计算,所以可能需要增大此内存量。 如果将 database_memory 数据库配置参数设置为 AUTOMATIC,那么数据库管理器会自动管理数据库内存。 要增大应用程序共享堆大小,请增大 appl_memory 数据库配置设置或 instance_memory 数据库管理器配置设置。 更新配置参数时,最好是每次对值进行更改的幅度不要超过 10%,直到错误情况得到解决为止。 例如,假定 堆名称 是 util_heap_sz,数据库名称是 TORDB1。 要将此数据库配置参数更新为 10000,请运行以下命令: 要查看数据库配置参数的列表,使用 GET DATABASE CONFIGURATION 命令。 要更新数据库管理器配置参数的值,例如,将 mon_heap_sz 更新为 100,请运行以下命令: 要查看数据库管理器配置参数的列表,使用 GET DATABASE MANAGER CONFIGURATION 命令。 如果所有相关联的配置参数都设置为 AUTOMATIC 或 COMPUTED,那么实例的内存需求会超过机器上配置的内存量。 可以采用的解决方案包括减少数据库工作负载、启用连接集中器功能部件或者向机器添加更多内存。 sqlcode:-973 sqlstate:57011 |
SQL0974N |
包含数据库的驱动器被锁定。 | 系统报告说明包含数据库的驱动器已锁定。
无法处理该语句。 |
确保系统上没有发生可以锁定驱动器的其他处理(例如,CHKDSK)。 再次尝试执行该操作。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 sqlcode:-974 sqlstate:57020 |
SQL0975N |
不能启动新事务,因为数据库或实例 名称 被用户 用户名 停顿。 停顿类型:类型。 | 另一个用户已停顿您正在尝试使用的实例或数据库,在实例或数据库不再处于停顿状态之前,不允许新事务。
停顿类型 类型 指的是已停顿的实例或数据库,对于实例是“1”,对于数据库是“2”。 |
与当前已停顿该实例或数据库的用户联系,以确定该实例或数据库何时将不再处于停顿状态,并在那时重试此请求。
sqlcode:-975 sqlstate:57046 |
SQL0976N |
指定的 I/O 设备未就绪。 | 该 I/O 设备或介质未就绪,无法接受 I/O 命令。
无法处理该语句。 用户响应: 确保该 I/O 设备或介质就绪,然后再次尝试该操作。 |
sqlcode:-976
sqlstate:57021 |
SQL0977N |
COMMIT 状态未知。 | tm_database 在 COMMIT 处理期间已变得不可用,这已导致 COMMIT 的结果未知。 当 tm_database 可用时,将发生数据库再同步。 注意,在再同步期间,可能已回滚了事务。 可安全地进一步执行锁定 SQL 语句,但是,在完成再同步进程之前,锁定可能会被一直挂起。 | 验证是否可以连接 tm_database,例如,通过使用 CLP。 如果不能连接,那么遵循返回的 SQLCODE 所必需的操作以确保可以建立连接。
sqlcode:-977 sqlstate:40003 |
SQL0978N |
存储介质处于写保护状态。 | 尝试对数据库执行写操作,但数据库存储介质处于写保护状态。
无法处理该语句。 |
验证是否正在使用正确的存储介质。 必要时,撤销对存储介质的写保护。
sqlcode:-978 sqlstate:55009 |
SQL0979N |
对于运行时 SYNCPOINT 为 NONE 的应用程序进程,COMMIT 已对 数目 个数据库失败。 故障包括下列数据库别名和 SQLSTATE 对(最多可以返回四对):别名/SQLSTATE1、别名/SQLSTATE2、别名/SQLSTATE3 和 别名/SQLSTATE4。 | 应用程序连接至多个数据库,发出了 COMMIT,但对于其中一个或多个这些连接失败。
联合系统用户:如果其中一个失败的连接是使用昵称的联合服务器数据库,那么对昵称所需的其中一个数据源进行落实失败。 |
根据应用程序和正在更新的数据的性质,用户可能希望停止正在执行的处理,记录故障,并发出适当的 SQL 以确保所涉及的所有数据库都一致反映应用程序预编译执行的更改。
如果不能返回受 COMMIT 错误影响的数据库的完整列表,请参阅完整列表的诊断日志。 sqlcode:-979 sqlstate:40003 |
SQL0980C |
发生了磁盘错误。 无法处理后续的 SQL 语句。 | 发生磁盘错误,将阻止成功执行当前的和后续的 SQL 语句。 应用程序不允许发出附加的 SQL 语句。 例如,与应用程序相关的恢复例程不能发出附加的 SQL 语句。 数据库被标记为需要恢复,并且阻止使用数据库的所有应用程序访问该数据库。
无法处理该语句。 |
记录来自 SQLCA 的所有错误信息(如果有可能)。 终止使用数据库的所有应用程序。 确定错误是否是硬件错误。 重新启动数据库。 如果不能恢复,请从备份副本复原数据库。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 sqlcode:-980 sqlstate:58005 |
SQL0982N |
发生了磁盘错误。 但是,可以处理后续的 SQL 语句。 | 在处理临时系统文件期间发生磁盘错误,将阻止成功执行当前的 SQL 语句。 但是,可以处理后续的 SQL 语句。
无法处理该语句。 |
接收到此消息(SQLCODE)后就终止应用程序。
sqlcode:-982 sqlstate:58004 |
SQL0983N |
事务日志不属于当前的数据库。 | 存储在日志文件中的特征符与和数据库有关的特征符不匹配。 当用户指定的存储日志文件的目录与存储数据库的目录不相同时,通常会发生此错误。 可能涉及文件重定向。
无法处理该语句。 |
用对日志文件的正确访问权重新提交命令。
sqlcode:-983 sqlstate:57036 |
SQL0984C |
COMMIT 或 ROLLBACK 不成功。 无法处理后续的 SQL 语句。 | 因为系统错误,而不能成功地处理落实或回滚操作。 应用程序不允许发出附加的 SQL 语句。 例如,与应用程序相关联的恢复例程可能不发出附加的 SQL 语句。 数据库被标记为需要恢复,并且阻止使用数据库的所有应用程序访问该数据库。
无法处理该语句。 |
记录消息号 (SQLCODE) 以及所有 SQLCA 错误信息(如果可能)。 终止使用数据库的所有应用程序。 重新启动数据库。 如果正在安装样本数据库,那么删除它并再次安装样本数据库。
如果不能恢复,请从备份副本复原数据库。 如果跟踪处于活动状态,那么在操作系统命令提示符处调用“独立跟踪设施”。 请与您的技术服务代表联系,并提供下列信息: 需要的信息:
联合系统用户:找出导致请求失败的数据源中的问题,并对该数据源执行必需的诊断步骤和数据库恢复过程。 各个数据源的故障诊断过程和数据库恢复过程各有不同,因此请参阅适用的数据源手册。 sqlcode:-984 sqlstate:58005 |
SQL0985C |
处理数据库目录时发生文件错误。 数据库不可用。 | 系统不能从目录文件上的 I/O 错误恢复。
系统不能处理使用数据库的任何语句。 |
从备份副本复原数据库。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 sqlcode:-985 sqlstate:58005 |
SQL0986N |
处理用户表时发生文件错误。 此表不可使用。 | 表中的数据不再有效。
系统不能处理使用此表的任何语句。 |
如果数据库不一致,请从备份版本复原数据库。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。 sqlcode:-986 sqlstate:58004 |
SQL0987C |
不能分配应用程序控制共享内存集。 |
不能分配应用程序控制共享内存集。 导致此错误的原因是,数据库管理器或正在其中尝试数据库管理器操作的环境的内存资源不够。 可导致此错误的内存资源包括:
|
下列其中一项或多项:
sqlcode:-987 sqlstate:57011 |
SQL0989N |
AFTER 触发器 触发器名称 尝试了修改表 表名 中由 FROM 子句内的 SQL 数据更改语句修改的行。 | 在 FROM 子句中指定了 SQL 数据更改语句,但是 SQL 数据更改语句的底层目标基本表定义了将修改同一个表的 AFTER 触发器。 这是不允许的。
无法处理该语句。 |
避免在 FROM 子句中使用 SQL 数据更改语句,或者更改触发器以便使它不会修改是 SQL 数据更改语句的目标的表。
sqlcode:-989 sqlstate:560C3 |
SQL0990C |
发生了索引错误。 请重组该表。 | 索引进行了可观的活动,使用了索引的所有可用空间。
联合系统用户:数据源也可能会检测到此情况。 无法处理该语句。 |
落实工作并再次尝试运行该命令。 如果错误继续,那么回滚工作。 如果错误仍存在,那么重组该表(如果有可能)。
联合系统用户:找出导致请求失败的数据源中的问题,并遵循为该数据源重新创建索引的过程。 |
SQL0992C |
预编译的程序的发行版号无效。 | 预编译的程序(程序包)的发行版号与数据库管理器的已安装版本的发行版号不兼容。
预编译的程序 (package) 不能对数据库管理器的当前版本使用。 无法处理该命令。 |
只使用用兼容的数据库管理器发行版级别预编译的程序。
sqlcode:-992 sqlstate:51008 |
SQL0993W |
数据库配置文件中日志 (newlogpath) 的新路径无效。 |
由于下列其中一种原因,日志文件的路径无效:
未完成请求的更改。 |
要更改日志文件的路径,提交带有有效值的数据库配置命令。
sqlcode:+993 sqlstate:01562 |
SQL0994N |
应用程序保存点的用法无效。 |
不一致地使用了应用程序保存点功能。 该程序尝试执行下列其中一项操作:
不能处理该函数。 |
更正程序中的保存点用法。 |
SQL0995W |
日志文件 (logpath) 的当前路径无效。 日志文件路径被复位为缺省值。 |
由于下列其中一种原因,日志文件的路径无效:
对于循环日志记录,日志文件是在缺省日志路径中创建的。 对于归档日志记录,下一个日志文件是在缺省日志路径中创建的。 未完成请求的更改。 |
要更改日志文件的路径,提交带有有效值的配置命令。
sqlcode:+995 sqlstate:01563 |
SQL0996N |
不能为表空间中的对象释放页面。 | 在表空间中存在毁坏的内部数据库页或内部逻辑错误。 | 停止使用对象或表空间。 与 IBM 服务中心联系,以检查对象和表空间。
sqlcode:-996 sqlstate:58035 |
SQL0997W |
关于事务处理的一般参考消息。 原因码:XA-原因码。 |
SQLCODE 997 仅在数据库管理器的组件之间传送,并且将不返回到应用程序。 它用于在没有错误的情况下传送 XA 返回码。 可能的原因码是:
|
不需要执行任何操作。 |
SQL0998N |
在事务或试探性处理期间出错。 原因码 = reason-code。 子代码:子代码。 | 当处理分布式事务时,检测到错误。 事务是:
可能的原因码(对应的 X/Open XA 原因码显示在括号中)是:
|
对于原因码 1 至 8,因为有时 SQLCA 不能返回到调用程序,所以将在系统日志中生成一个条目。
如果该错误由与昵称相关联的失败数据源引起,那么失败的数据源的位置将总是出现在联合服务器的系统日志中。 对于原因码 4,验证 xa open 字符串的内容并执行必需的更正。 对于原因码 4 子代码 11,应确保 xa_config 文件存在于 $SYBASE/$SYBASE_OCS 目录中,并且该文件中存在指定为 NODE 服务器选项的 LRM 名称。 对于原因码 9 子代码 02,确保 tp_mon_name 配置参数包含外部产品中动态库的名称,该外部产品将 ax_reg() 函数用于事务的动态注册。 对于原因码 14,确保 MSDTC 服务是活动的。 对于原因码 15,当 MSDTC 事务超时值太小时,就可能会发生这种情况。 增大超时值并查看该错误是否继续。 对于原因码 16:
对于原因码 35,尝试对全局事务中只充当只读资源管理器的数据库执行试探性操作。 示例是任何 DRDA 数据库,例如,DB2 MVS 版。 这些类型的非 XA 数据库将不会有任何 XA 不确定事务。 对于原因码 36、37 和 38,尝试对不确定事务执行无效的试探性操作。 您指定了错误的 XID,或在您记录此 XID 之后,已发生试探或再同步操作。 执行“试探性查询”请求以获取当前的不确定事务的列表,从而验证是否还需要执行试探性操作。 对于原因码 39,指定的 XID 用于已经结束并正在等待两阶段落实进程开始的事务。 只能对进入了两阶段落实过程并成为不确定事务的事务执行试探操作。 对于原因码 40,尝试在已失败的事务下执行 SQL 语句。 一个示例是,在事务线程中尝试 SQL 语句,而该事务线程已在参与同一事务的紧耦合线程异常终止之后成功注册。 对于原因码 41,可以在管理通知日志找到更多有关该问题的信息。 需要在失败的节点上重新启动数据库管理器。 可能有必要与系统管理员联系以获取帮助。 对于原因码 42,出站连接可通过修改网关目录以使用 TCPIP 通信协议来建立。 对于原因码 43,如果要连接至 DB2 for z/OS 服务器或 DB2 for i 服务器,请使用 DB2 Connect 对数据库进行编目,然后启动同步点管理器。 对于原因码 69,事务管理器(TM)数据库或资源管理器(RM)数据库或这两者与生成不确定事务时的 TM 和/或 RM 数据库不同。 换句话说,TM 数据库名称或 RM 数据库名称可能引用了不同的数据库实例。 日志标识不匹配可能是由下列原因造成的:
对于原因码 85,您正在更新多个数据源,但其中一些数据源已被试探性回滚或落实,导致事务被部分落实或回滚。 因为此原因码,数据现处于不一致状态,您必须手动检查事务所更新的每个数据源以更正数据。 对于原因码 210,一些节点已处于落实状态。 必须执行试探性落实以解析不确定事务。 对于原因码 221,确保参与同一 XA 事务的所有应用程序使用同一用户标识来连接数据库。 对于原因码 222,确保参与同一 XA 事务的所有应用程序具有同一 CCSID。 对于原因码 223,修改应用程序和客户机设置以使用本地客户机,或者,对于远程客户机,将 TCPIP 用作通信协议以连接网关。 对于原因码 224,将客户机更新为 V7.1 或更高版本。 对于原因码 225,确保应用程序不包含“XA 松耦合事务”中的任何无效操作。 可使用“XA 松耦合事务” 的常见应用程序服务器环境有 IBM Encina Transaction Server、IBM WebSphere Application Server、Microsoft Transaction Server 和 BEA Tuxedo。 如果您遇到此原因码,那么必须复查应用程序并确保未执行所指示的任何操作。 对于原因码 226,事务已达到回滚状态,现在正在此节点上回滚。 对于原因码 227,试探性请求应在协调程序节点上运行,请参阅 db2diag 日志文件以了解协调程序节点号。 对于原因码 228,在发出该请求之前,确保游标已关闭。 对于原因码 229,在发出该请求之前,确保先前事务已完成。 对于原因码 230,已落实事务。 一般信息收集过程: 如果不能解决原因码标识的问题,那么记录消息号(SQLCODE)、原因码和消息中的可选子代码或系统日志中的 SQLCA。 如果故障源于联合数据库,那么还应记录在联合服务器的系统日志中找到的失败数据源的位置。 如果跟踪处于活动状态,那么在操作系统命令提示符处调用“独立跟踪设施”。 然后,请与技术服务代表联系,并提供以下信息:
在事务管理器和数据库管理器的控制台或消息记录中可能有更多信息。 sqlcode:-998 sqlstate:58005 |