db2 SQLCODE: -204, SQLSTATE: 42704的解决方案

时间:2022-06-01 17:53:12

        今天工作的时候遇到一个很诡异的问题,我把db2数据库restore到以前备份的001 file,然后重启连接到这个数据库的websphere,结果应用报错了,

错误代码:SQLCODE: -204, SQLSTATE: 42704

       我以前restore的时候都没有任何问题,直接reorg再run stat就能用,结果今天研究了几个小时,还不如网上搜1分钟:

<----------------------------------------完美的分割线----------------------------------------------------------------------------------------------->

以下网上转载:

此错误由以下之一引起: 

o 未在数据库中定义由 "<名称>" 标识的对象。

o 在表上未定义由 "<名称>" 标识的数据分区。

o 正在使用某个数据类型。此错误可能是由于下
列原因而发生的:

- 如果 "<名称>"
是限定名称,则具有此名称的数据类型在数据
库中不存 在。

- 如果 "<名称>"
是非限定名称,则用户的函数路径不包含期望
的数据类 型所属于的模式。

- 数据类型在创建时间戳记早于程序包绑定时
间的数据库中不存在(适用于静态语句)。


- 如果数据类型在 CREATE TYPE 语句的 UNDER
子句中,则该类型名可能与正定义的类型相同
,这 是无效的。

o 下列其中一项中正在引用某个函数:

- DROP FUNCTION 语句

- COMMENT ON FUNCTION 语句

- CREATE FUNCTION 语句的 SOURCE 子句

如果 "<名称>"
是限定名称,则函数不存在。如果
"<名称>"
是非限定名称,则当前函数路径的任何模式中
都不存 在
此名称的函数。注意,函数不能以
COALESCE、 NULLIF 或 VALUE
内置函数作为源函数。

o 在 CREATE SECURITY LABEL COMPONENT 语句中 UNDER
子句右边使用了名为“名称”的元素,但尚未
将该 元素定义为 ROOT
或者在其他某个元素下方(UNDER)。

o 下列其中一个标量函数指定了“名称”标识的
安全策略,但在数据库中未定义该安全策略。

- SECLABEL

- SECLABEL_TO_CHAR

- SECLABEL_BY_NAME

<-------------------------------------分割完成---------------------------------------------------------------------------------------------->

我犯的错误即为上面的红色部分,我将系统时间往前调了一年,用于满足我的应用中一个特殊需求,结果这一细小改动就导致程序的绑定时间比我restore的数据库(也就是今天)早了一年!故而出错,分享至此,希望大家引以为鉴~~~