当我将数据插入表(db2)时,我收到了这个错误:
Message: Operation not allowed for reason code "7" on
table "ELSAG.ICGR1106".. SQLCODE=-668, SQLSTATE=57016, DRIVER=3.50.152,...
当我用Google搜索时,我发现之前的ALTER TABLE语句试图将列添加到具有使用行属性敏感度定义的编辑过程的表中。没有列可以添加到此表中。
有没有办法纠正它?
一旦我放下并重新创建表格,我可以再次插入。
提前致谢。
答案 0 :(得分:43)
为了增加詹姆斯的回答并节省人们四处寻找的时间,你可以执行
CALL SYSPROC.ADMIN_CMD('REORG TABLE MY_TABLE_NAME')
通过任何可用的SQL客户端(即使通过ODBC或JDBC连接)来纠正此问题。但是,连接必须处于自动提交模式,您必须具有管理员权限才能执行此命令。
我强烈建议您在调用之前阅读REORG上的文档。
答案 1 :(得分:7)
答案 2 :(得分:3)
CALL SYSPROC.ADMIN_CMD(' REORG TABLE TABLE_NAME')解决了这个问题
答案 3 :(得分:1)
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 Operating not allowed for reason code '7'
答案 4 :(得分:0)
我关闭了某些表的完整性检查,然后在更改数据时收到了该错误消息。这在这里生成了帮助的语句:
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;