2011-09-28 14 views
19

Mentre l'inserimento dei dati in una tabella (DB2), ho ottenuto questo errore:DB2 SQLCODE -668 quando si inserisce

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

quando Ho cercato su google, ho trovato che la precedente istruzione ALTER TABLE ha tentato di aggiungere un colonna a una tabella con una procedura di modifica definita con la sensibilità degli attributi di riga. Nessuna colonna può essere aggiunta a questa tabella.

C'è un modo per correggerlo?

Una volta rilasciata e ricreata la tabella, posso inserirla nuovamente.

Grazie in anticipo.

risposta

7

Secondo questo: SQL0668

Hai fatto qualche modifica al tavolo che richiede un REORG prima di poter aggiornare ulteriormente il tavolo.

Eseguire l'utilità REORG sul tavolo e si dovrebbe essere OK.

+0

Anche sotto DB2 LUW potrebbe essere che un "SET integrità" è necessaria dopo "ALTER TABLE" o "LOAD" si è verificato. – Turophile

37

Per aggiungere alla risposta di James' e salvare le persone tempo guardando in giro, si potrebbe eseguire

CALL SYSPROC.ADMIN_CMD('REORG TABLE MY_TABLE_NAME') 

tramite qualsiasi client di SQL disponibile (vale a dire anche su ODBC o connessione JDBC) per correggere questo problema. Tuttavia, la connessione deve essere in modalità di autocommit e devi disporre dei privilegi di amministratore per eseguire questo comando.

Consiglio vivamente di leggere la documentazione su REORG prima di chiamarla.

+0

Funziona benissimo !! – Shalika

3

CALL SYSPROC.ADMIN_CMD ('TABLE TABLE_NAME REORG') risolve il problema