web-dev-qa-db-fra.com

db2 SQLCODE -668 lors de l'insertion

Pendant que j'insérais des données dans une table (db2), j'ai eu cette erreur:

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

lorsque je l'ai recherché sur Google, j'ai constaté que la précédente instruction ALTER TABLE avait tenté d'ajouter une colonne à une table qui avait une procédure d'édition définie avec une sensibilité d'attribut de ligne. Aucune colonne ne peut être ajoutée à ce tableau.

Existe-t-il un moyen de le corriger?

Une fois que j'ai déposé et recréé la table, je peux l'insérer à nouveau.

Merci d'avance.

23
user438159

Pour ajouter à la réponse de James et faire gagner du temps aux gens en regardant autour, vous pouvez exécuter

CALL SYSPROC.ADMIN_CMD('REORG TABLE MY_TABLE_NAME')

via n'importe quel client SQL disponible (c'est-à-dire même sur ODBC ou connexion JDBC) pour corriger ce problème. Cependant, la connexion doit être en mode de validation automatique et vous devez disposer des privilèges d'administrateur pour exécuter cette commande.

Je recommande fortement de lire la documentation sur RÉORGANISER avant de l'appeler.

44
Alex Pakka

Selon ceci: SQL0668

Vous avez apporté une modification à la table qui nécessite un REORG avant de pouvoir mettre à jour la table.

Exécutez l'utilitaire REORG sur la table et vous devriez être OK.

7
James Anderson

CALL SYSPROC.ADMIN_CMD ('REORG TABLE TABLE_NAME') résout le problème

3
Ankireddy Polu