|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité régulier
![]() Inscription : juin 2004 Messages : 47 ![]() |
Bonjour à tous,
Je rencontre un soucis sur DB2 ISeries (version 6). Voici le problème : j'ai une table nommée INV_LISTE_PN_LOT_RES et je souhaiterais ajouter un champ CLASSE (type = VARCHAR). Si j'exécute le script suivant : Code :
"ALTER TABLE MSF.INV_LISTE_PN_LOT_RES ADD COLUMN CLASSE VARCHAR (10) CCSID 37 NOT HIDDEN ;"
Citation:
n'ait pas correctement diagnostiqué l'erreur. Les messages précédents indiquent peut-être qu'un incident s'est produit sur cette instruction SQL, mais que le diagnostic n'a pas été correctement effectué par SQL. L'ID message précédent est . Une erreur interne de type 4408 s'est produite. S'il s'agit d'une précompilation, le traitement s'interrompra sur cette instruction. Que faire . . . : Consultez les messages précédents pour déterminer si un incident s'est produit sur cette instruction SQL. Pour consulter les messages, utilisez la commande DSPJOBLOG en mode interactif, ou la commande WRKJOB pour visualiser la sortie d'une précompilation. Un programme d'application recevant ce code retour peut tenter de lancer de nouvelles instructions SQL. Corrigez les erreurs éventuelles et renouvelez votre demande.". En regardant dans l'historique du travail, je trouve les erreurs suivantes : - "Tentative de division par zéro pour opération en virgule fixe" - "Erreur interne dans le processeur de requête de fichier.". Avez-vous une idée pour résoudre mon problème ? Merci d'avance et bonne soirée Luc |
|
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
A l'origine, s'agit d'un fichier (DDS) ou d'une table (DDL) ? Je pense que tu peux avoir cette info par un DSPFD ?
Essaye de dupliquer l'objet et d'essayer ton ALTER TABLE sur une table vide (sans données) pour voir. Aussi, attention, je vois que tu créés un VARCHAR sans ALLOCATE, en espérant que ta zone CLASSE ne soit pratiquement jamais renseignée, dans le cas contraire, attention aux performances ! |
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : juin 2004 Messages : 47 ![]() |
Tout d'abord, merci K2R400 pour ta réponse.
INV_LISTE_PN_LOT_RES est une table (DDL) Citation:
Code :
CREATE TABLE msf.inv_liste_pn_lot_res1 LIKE msf.inv_liste_pn_lot_res Citation:
Merci d'avance |
||
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Il faut en être certain, et le vérifier avec un DSPFD qui doit te donner :
Code :
C'est pour ça que je pense qu'à l'origine c'est un fichier DDS au lieu de DDL. Ces entités ne sont pas fiables, ton problème pourrait provenir de zones numériques ou packées (decimal) qui contiendraient des caractères. Citation:
Exemple : Tu créés un VARCHAR(10000) avec un ALLOCATE(100). Dans la table, les 9900 caractères n'y sont pas, mais stockés dans une autre table (cachée), seuls les 100 premiers y sont (plus la longueur totale soit 102 pour un VARCHAR et 104 pour un CLOB). L'avantage : - Il est plus rapide d’accéder aux données consécutivement sur disque quand on lit plusieurs enregistrements (groupages, result set...) L'inconvénient : - Si ta zone est lue (attention au SELECT *) et qu'elle contient plus de 100 caractères, il faudra un deuxième I/O disque pour lire les informations (extra data). Dans ton exemple, chaque fois que tu liras un enregistrement, il y aura 2 I/O d'où un impact sur les performances. |
|||
|
|
00
|
|
|
#5 | |||||
|
Invité régulier
![]() Inscription : juin 2004 Messages : 47 ![]() |
Citation:
Citation:
Citation:
Merci d'avance ! |
|||||
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : juin 2004 Messages : 47 ![]() |
Autre information, si je vide ma table et que je cherche à ajouter cette nouvelle colonne, j'ai la même erreur.
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
humm, bizarre....
Procédons par élimination : 1) Ce n'est pas un fichier DDS donc le problème ne vient pas des données. 2) Sur une table identique sans données ca marche mais pas sur la tienne sans données. Peut-être un problème de dépendants (triggers, index, vues, MQTs, etc...). Il faudrait peut-être supprimer les dépendants et ressayer. Il faudrait s'assurer aussi que tu es les dernières PTFs DB2 Group à vérifier sur le site IBM FIX CENTRAL et par la commande WRKPTFGRP. Il faudrait aussi lancer un RCLDBXREF pour vérifier. |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Analyste-Programmeur as/400 Inscription : août 2002 Messages : 96 ![]() |
Ma question.
Est-ce que tu as des fichiers logiques attachés à ta table ? Fait un DSPDBR de ton fichier. Il y a peut-être un problème à ce niveau. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com