繁体   English   中英

db2 SQLCODE -668 插入时

[英]db2 SQLCODE -668 when inserting

当我将数据插入表 (db2) 时,出现此错误:

Message: Operation not allowed for reason code "7" on 
table "ELSAG.ICGR1106".. SQLCODE=-668, SQLSTATE=57016, DRIVER=3.50.152,...

当我用谷歌搜索它时,我发现之前的 ALTER TABLE 语句试图将一列添加到一个表中,该表具有一个用行属性敏感性定义的编辑过程。 不能向该表添加任何列。

有没有办法纠正它?

一旦我删除并重新创建表,我就可以再次插入。

提前致谢。

为了添加詹姆斯的答案并节省人们环顾四周的时间,您可以执行

CALL SYSPROC.ADMIN_CMD('REORG TABLE MY_TABLE_NAME')

通过任何可用的 SQL 客户端(即甚至通过 ODBC 或 JDBC 连接)来纠正这个问题。 但是,连接必须处于自动提交模式,并且您必须具有管理员权限才能执行此命令。

我强烈建议在调用REORG之前阅读有关REORG的文档。

根据这个: SQL0668

您已经对表进行了一些更改,这需要在进一步更新表之前进行 REORG。

对表运行 REORG 实用程序,您应该没问题。

CALL SYSPROC.ADMIN_CMD('REORG TABLE TABLE_NAME') 解决问题

SELECT REORG_PENDING FROM SYSIBMADM.ADMINTABINFO where TABSCHEMA = '<schema_name>' and tabname = '<table_name>';

如果上面的查询返回 Y 然后运行下面的查询:

call sysproc.admin_cmd('reorg table <schema_name>.<table_name>');

有关更多信息,请访问: SQL0668N 由于原因代码“7”而不允许操作

我关闭了某些表的完整性检查,然后在更改数据时收到了该错误消息。 这在这里生成了帮助:

select 'SET INTEGRITY FOR ' || rtrim(tabname) || ' IMMEDIATE CHECKED;' 
from syscat.tables 
where CONST_CHECKED like '%N%' 
  or status != 'N'
  or access_mode != 'F'
with ur;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM