db2中使用SQLCODE失败的更新表:-668,SQLSTATE:57016,SQLERRMC:7;

时间:2013-12-05 09:25:15

标签: sql database db2 db2-luw

我正在使用db2 9.5我已经在表中创建了一个已成功创建的列,但我无法更新表列并收到以下错误

  

[错误]脚本行:1-1 --------------------------    DB2 SQL错误:SQLCODE:-668,SQLSTATE:57016,SQLERRMC:7; DB2ADMIN.XCATENTRYEXT    消息:表“DB2ADMIN.XCATENTRYEXT”上的原因代码“7”不允许操作。

在google上的一些博客/网站上,我发现REORG命令作为以下链接中提到的解决方案 http://bytes.com/topic/db2/answers/508869-reorg-tablespace

我已尝试在数据库上运行以下查询来解决问题。

Database["DB2"].ExecuteNonQuery("call SYSPROC.ADMIN_CMD ('REORG TABLE DB2ADMIN.XCATENTRYEXT index CATENTRY_ID INPLACE')")

REORG TABLE DB2ADMIN.XCATENTRYEXT index CATENTRY_ID INPLACE

REORG TABLE DB2ADMIN.XCATENTRYEXT 
REORG INDEXES I0000908 FOR TABLE DB2ADMIN.XCATENTRYEXT

但所有查询在结果中都有相同的错误,如

 DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: Database;BEGIN-OF-STATEMENT;<variable_set>
 Message: An unexpected token "Database" was found following "BEGIN-OF-STATEMENT".  Expected tokens may include:  "<variable_set>".

我遇到了这个错误,我甚至无法更新该特定表的任何列。

3 个答案:

答案 0 :(得分:16)

从错误消息开始,您以某种方式将整个字符串Database["DB2"].ExecuteNonQuery("call SYSPROC.ADMIN_CMD ('REORG TABLE DB2ADMIN.XCATENTRYEXT index CATENTRY_ID INPLACE')")作为SQL语句提交,这显然是不正确的。

只需在shell命令行中发出以下命令:

db2 connect to <your database name here>
db2 REORG TABLE DB2ADMIN.XCATENTRYEXT

答案 1 :(得分:15)

可以通过SQL语句执行REORG:

CALL SYSPROC.ADMIN_CMD('REORG TABLE SCHEMA.TABLENAME');

答案 2 :(得分:0)

如果你正在使用像 dbeaver 这样的工具,你可以去 Schema --> table name --> 右键单击​​ --> 选择工具,你应该看到 reorg table 的选项