今天工作的时候遇到一个很诡异的问题,我把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的数据库(也就是今天)早了一年!故而出错,分享至此,希望大家引以为鉴~~~