Archives de catégorie : SQLCODE

CODE RETOUR -646

TABLE table-name CANNOT BE CREATED IN OR MOVED TO SPECIFIED TABLE SPACE table-space-name BECAUSE IT ALREADY CONTAINS A TABLE

Explication
L’espace table spécifié dans une instruction CREATE TABLE ou ALTER TABLESPACE est l’un des types d’espaces table suivants et contient déjà une table existante ou a une modification de définition en attente pour déplacer une table vers table-space-name :

  • Un espace table partitionné
  • Un espace table défini implicitement
  • Un espace table LOB
  • Un espace table XML
  • Un espace table qui contient une table temporelle de période système ou une table d’historique
  • Un espace table qui contient une table d’archivage ou une table d’archivage
  • Un espace table qui est l’espace table cible pour une instruction ALTER TABLESPACE MOVE TABLE en attente

Une seule table peut exister dans ces types d’espaces table.

Action du système
L’instruction ne peut pas être traitée. La table n’a pas été créée ou déplacée.

Réponse du programmeur
Vérifiez que l’espace table correct a été spécifié dans l’instruction défaillante.

SQLSTATE
55017

CODE RETOUR -644

INVALID VALUE SPECIFIED FOR KEYWORD OR CLAUSE keyword-or-clause IN STATEMENT statement-type

Explication
La valeur spécifiée pour le paramètre keyword-or-clause dans l’instruction SQL statement-type n’est pas valide.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Dans la plupart des cas, remplacez la valeur du keyword-or-clause spécifié par une valeur valide.

Cette erreur peut être émise pour des modifications de définition en attente par des utilitaires ou des instructions de définition de données. Dans ce cas, recherchez dans la colonne STATEMENT_TEXT des lignes associées de la table de catalogue SYSIBM.SYSPENDINGDDL une modification de définition en attente contenant une valeur non valide. Si l’erreur concerne une modification MAXPARTITIONS non valide, comparez le nombre réel de partitions pour l’espace table à la valeur MAXPARTITIONS spécifiée. Il est possible que le nombre de partitions ait augmenté pour dépasser la valeur MAXPARITIONS d’un changement de définition en attente. Dans ce cas, modifiez l’espace table pour supprimer toutes les modifications de définition en attente. Ensuite, rééditez les modifications en attente avec des spécifications valides.

SQLSTATE
42615

CODE RETOUR -643

A CHECK CONSTRAINT OR THE VALUE OF AN EXPRESSION FOR A COLUMN OF AN INDEX EXCEEDS THE MAXIMUM ALLOWABLE LENGTH KEY EXPRESSION

Explication
La définition d’une contrainte de vérification ou d’une expression d’une colonne d’index dépasse la longueur maximale autorisée :

  • Une contrainte de vérification a dépassé 3 800 octets UTF-8. Les espaces vides redondants sont exclus de cette limite.
  • La valeur d’une expression pour un index dépassait 4 000 octets UTF-8.

Action du système
L’instruction CREATE TABLE ou ALTER TABLE a échoué. L’instruction ne peut pas être exécutée.

Réponse du programmeur
Modifiez la contrainte ou l’expression afin qu’elle ne dépasse pas la limite maximale autorisée. S’il s’agit d’une contrainte de vérification, réécrivez la définition de la contrainte de vérification afin qu’elle soit inférieure à 3 800 octets UTF-8. Vous devrez peut-être diviser une contrainte de vérification en deux ou plusieurs contraintes de vérification plus petites.

SQLSTATE
54024

CODE RETOUR -640

LOCKSIZE ROW CANNOT BE SPECIFIED BECAUSE TABLE IN THIS TABLESPACE HAS TYPE 1 INDEX

Explication
Si LOCKSIZE ROW est spécifié pour un espace table, tous les index des tables de l’espace table doivent être des index de type 2. L’instruction SQL suivante identifie tous les index de type 1 :

SELECT I.CREATOR, I.NAME FROM SYSIBM.SYSINDEXES I, SYSIBM.SYSTABLES T WHERE INDEXTYPE = ' ' AND T.TSNAME = 'table_space_name' AND T.DBNAMe = 'database_name' AND T.CREATOR = I.TBCREATOR AND T.NAME = I.TBNAME;

où ‘table_space_name‘ est le nom de l’espace table qui doit être modifié ; ‘database_name‘ est le nom de la base de données qui contient l’espace table.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Étant donné que LOCKSIZE ROW sur l’espace table et les index de type 1 sont en conflit, utilisez l’instruction ALTER INDEX pour convertir tous les index de type 1 en index de type 2 ou utilisez une autre option LOCKSIZE.

SQLSTATE
56089

CODE RETOUR -639

A NULLABLE COLUMN OF A FOREIGN KEY WITH A DELETE RULE OF SET NULL CANNOT BE A COLUMN OF THE KEY OF A PARTITIONED INDEX

Explication
Une clé de partition de l’index de cluster ne peut pas être mise à jour. Par conséquent, une colonne de clé étrangère avec une règle de suppression de SET NULL ne peut pas être une colonne d’une clé de partition si cette colonne est “nullable”. Si cette erreur se produit pour une opération ALTER TABLE, la clé étrangère ne peut pas être créée. Si cette erreur se produit pour une opération CREATE INDEX, l’index ne peut pas être créé.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Vérifiez la règle de suppression de la contrainte référentielle et les clés de partition de l’index. Effectuez l’une des actions suivantes:

  • Si l’opération erronée était CREATE INDEX, modifiez la définition de la clé de partition d’index ou supprimez et redéfinissez la contrainte référentielle avec une règle de suppression différente.
  • Si l’opération erronée était ALTER TABLE, modifiez la règle de suppression référentielle afin que toutes les clés d’index “nullables” ne fassent pas partie des clés étrangères.

SQLSTATE
56027

CODE RETOUR -638

TABLE table-name CANNOT BE CREATED BECAUSE COLUMN DEFINITION IS MISSING

Explication
L’instruction CREATE TABLE ne contient aucune définition de colonne.

Action du système
L’instruction SQL ne peut pas être exécutée.

Réponse du programmeur
Ajoutez une définition de colonne à l’instruction.

SQLSTATE
42601

CODE RETOUR -637

DUPLICATE keyword-name KEYWORD OR CLAUSE

Explication
L’instruction SQL contient une spécification en double pour le mot-clé keyword-name . Par exemple:

  • DEFAULT, UNIQUE et PRIMARY ne peuvent être spécifiés qu’une seule fois dans une définition de colonne.
  • UNIQUE et PRIMARY ne peuvent pas être spécifiés tous les deux pour la même définition de colonne.
  • PRIMARY ne peut être spécifié qu’une seule fois dans une instruction CREATE TABLE.
  • La chaîne d’attributs attribute-string spécifiée dans la clause ATTRIBUTES de l’instruction PREPARE ne peut pas spécifier une option plus d’une fois.
  • ACTIVATE ou DEACTIVATE ROW ACCESS CONTROL ne peut être spécifié qu’une seule fois.
  • ACTIVATE ou DEACTIVATE COLUMN ACCESS CONTROL ne peut être spécifié qu’une seule fois.
  • IN ACCELERATOR ne peut être spécifié qu’une seule fois.
  • ATTRIBUTE ENCRYPTION ne peut être spécifié qu’une seule fois dans une définition TRUSTED CONTEXT.
  • Il existe plusieurs xquery-context-item-expression dans la clause PASSING d’un XMLQUERY ou XMLEXISTS.
  • Les clauses WHEN MATCHED et WHEN NOT MATCHED ne peuvent pas être spécifiées plus d’une fois dans une instruction MERGE.
  • La clause SKIP LOCKED DATA ne peut pas être spécifiée plusieurs fois pour :
    1. toutes les clauses dans select-stmt
    2. Instructions SELECT INTO
    3. rechercher des instructions UPDATE
    4. rechercher des instructions DELETE
  • Si plusieurs clauses ADD COLUMN sont spécifiées dans la même instruction, au plus une clause ADD COLUMN peut contenir une references-clause.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Corrigez l’instruction en supprimant les clauses en double.

SQLSTATE
42614

CODE RETOUR -636

RANGES SPECIFIED FOR PARTITION part-num ARE NOT VALID

Explication
Les plages spécifiées pour le part-num de la partition physique ne sont pas valides pour l’une des raisons suivantes :

  • Les valeurs de clé de partitionnement spécifiées dans les spécifications de valeur de clé limite n’étaient pas dans l’ordre croissant ou décroissant.
  • Une valeur de clé de partitionnement qui a été spécifiée dans les spécifications de valeur de clé limite existe déjà. Les clés de limite en double ne doivent pas être spécifiées.
  • Toutes les colonnes de la clé de partitionnement sont ascendantes et une constante ou MINVALUE a été spécifiée après MAXVALUE dans la spécification de valeur de clé limite pour la partition. Une fois MAXVALUE spécifié, toutes les colonnes suivantes doivent être MAXVALUE.
  • Toutes les colonnes de la clé de partitionnement sont décroissantes et une constante ou MAXVALUE a été spécifiée après MINVALUE dans la spécification de valeur de clé limite pour la partition. Une fois MINVALUE spécifié, toutes les colonnes suivantes doivent être MINVALUE.

Action du système
L’instruction ne peut pas être traitée.

Réponse de l’utilisateur
Corrigez les spécifications de partitionnement de plage dans l’instruction pour la partition identifiée.

SQLSTATE
56016

CODE RETOUR -635

THE DELETE RULES CANNOT BE DIFFERENT OR CANNOT BE SET NULL

Explication
Le code est utilisé pour signaler que les règles de suppression spécifiées dans deux clauses FOREIGN KEY de l’instruction CREATE TABLE ne sont pas valides car la table serait connectée par suppression à la même table via plusieurs chemins impliquant des relations avec différentes règles de suppression ou avec des règles de suppression de SET NUL.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Modifiez la règle de suppression.

SQLSTATE
42915

CODE RETOUR -634

THE DELETE RULE MUST NOT BE CASCADE

Explication
Le code est utilisé pour signaler que la règle de suppression CASCADE spécifiée dans la clause FOREIGN KEY d’une instruction ALTER TABLE n’est pas valide car :

  • La relation formerait un cycle qui entraînerait la suppression d’une table à elle-même.
  • La relation entraînerait la connexion par suppression d’une autre table à la même table via plusieurs chemins avec des règles de suppression différentes ou avec une règle de suppression égale à SET NULL.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Modifiez la règle de suppression.

SQLSTATE
42915