0

次の db2 スクリプトを端末で問題なく実行しました。しかし、このテーブルに関連する実際のフロント エンド ページにアクセスしようとすると、テーブルが非アクティブであることを示すエラー (コード57016 ) が表示されます。db2 を再起動しましたが、まだこの問題が発生しています。

誰でもここで私を助けてくれませんか

alter table CUSTOMER alter column Delivery set default 0! 
alter table CUSTOMER alter column Delivery set not null! 

alter table CUSTOMER add constraint pref_ck4 check (Delivery between 0 and 1)!

commit!
quit!

ロールバックは次のとおりです。

alter table CUSTOMER alter Delivery drop DEFAULT!
alter table CUSTOMER alter COLUMN Delivery drop NOT NULL!

alter table CUSTOMER drop constraint pref_ck4!

reorg table CUSTOMER!

commit!
quit!

私が受け取るエラー:

UncategorisedDatabaseException: Query=[SELECT * FROM CUSTOMER WHERE ID = ?], database       vendor error message is: DB2 SQL error: SQLCODE: -668, SQLSTATE: 57016, SQLERRMC: 7;CUSTOMER, UncategorisedDatabaseException errorCode = -668

db2 => ? 57016

SQLSTATE 57016: The table cannot be accessed, because it is inactive.
4

1 に答える 1

3

特定のエラーを理解するには、SQLCODE と SQLERRMC を確認することをお勧めします。SQLSTATE はエラーを一意に識別しません。

SQLCODE-668は SQL0668N です。SQLERRMC ( 7;CUSTOMER) は、CUSTOMER テーブルの理由コード 7 が原因であることを示しています。

このエラーを調べるには、DB2 クライアントからの便利なリファレンスを使用できます。

$ db2 "? sql0668n"


SQL0668N  Operation not allowed for reason code "<reason-code>" on table
      "<table-name>".

Explanation: 

Access to table "<table-name>" is restricted. The cause is based on the
following reason codes "<reason-code>": 

[...]

7        
         The table is in the reorg pending state. This can occur after
         an ALTER TABLE statement containing a REORG-recommended
         operation.

[...]

User response:

[...]

7        
         Reorganize the table using the REORG TABLE command.

         For a table in the reorg pending state, note that the following
         clauses are not allowed when reorganizing the table:

         *  The INPLACE REORG TABLE clause
         *  The ON DATA PARTITION clause for a partitioned table when
            table has nonpartitioned indexes defined on the table

REORG解決策は、テーブルで実行することです。

于 2012-10-30T00:22:22.723 に答える