Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2003, 11h35   #1
Membre habitué
 
Avatar de seb.49
 
Développeur informatique
Inscription : octobre 2002
Messages : 273
Détails du profil
Informations personnelles :
Âge : 32

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2002
Messages : 273
Points : 136
Points : 136
Par défaut Erreur lors de modification d'une table

Bonjour,

Voila, j'ai une table ACTIVITE(id_act, code, libelle)

je dois changer la taille de CODE, je l'ai déjà fait pour d'autre table et ca marche mais la dés que le je fais, je ne peux plus lister la table activite,

Interbase me dit :
Code :
internal gds software consistency CHECK (wrong record length (183))
J'ai essayé de supprimer le champ et le recréer, idem, dés que je touche à la strucutre de cette table et seulement de celle ci, j'ai l'erreur qui revient.

J'ai essayé de faire un Backup/Restore mais il me dit la meme erreur. Si je fais un database validation, ca me dit que tout est OK.

Il n'y a pas de relation qu'avec une table Entreprise, pas de dépendance, rien d'autre...

Je suis perdu, si vous avez des idées, je suis preneur.

D'avance merci
Seb

PS. J'utilise Interbase 5.5
seb.49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 11h51   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Y a t il d'autres objets lié à ta table ? et plus précisément la colonne Code ?

Genre Index, Domaine, Contraintes d'intégrité, Trigger etc.. ??
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 11h57   #3
Membre habitué
 
Avatar de seb.49
 
Développeur informatique
Inscription : octobre 2002
Messages : 273
Détails du profil
Informations personnelles :
Âge : 32

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2002
Messages : 273
Points : 136
Points : 136
Par défaut Erreur lors de modification d'une table

Non, pas de trigger, pas de contrainte sauf de primarykey (id_activite),
le domaine, je sais pas trop je crois que oui puisque je m'en sert pour modifier la taille du champ dans les tables systemes

j'ai juste la relation Entreprise - Activite:
ACTIVITE(id_act, code, libelle)
ENTREPRISE((id_ent,...,id_act#)
seb.49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 12h02   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Code et de quel type ? un domaine ?

Comment l'as tu modifié ?
Alter ....?
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 14h07   #5
Membre habitué
 
Avatar de seb.49
 
Développeur informatique
Inscription : octobre 2002
Messages : 273
Détails du profil
Informations personnelles :
Âge : 32

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2002
Messages : 273
Points : 136
Points : 136
non, le alter ne marche pas pour modifier la taille du champ, je fait un update des champ RDB$FIELD_LENGTH et RDB$CHARACTER_LENGTH de la table RDB$FIELDS

code est un varchar(12) et je veuxd que ce soit un varchar(200) je peux pas expliquer pkoi par ce que c'est long
seb.49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 14h13   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
si tu n as pas fait avec Alter ca ne m'étonne qu'à moitier ca ca foire...

Comment a ton avis il peux réorganiser son fichier et ses données si tu modifie directement les longueurs dans les tables systèmes ???

Les commandes Alter n'ont pas été inventé pour rien... ca permet au SGBD de réorganiser physiquement ses données....

Je pense que si tu as procédé comme ca pour toutes les autres données (avec changement de taille) tu risques d'avoir de nombreuses surprises...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 14h21   #7
Membre habitué
 
Avatar de seb.49
 
Développeur informatique
Inscription : octobre 2002
Messages : 273
Détails du profil
Informations personnelles :
Âge : 32

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2002
Messages : 273
Points : 136
Points : 136
avec alter on peux pas modifier la taille des champs, meme dans la doc il le dise, pour modifier une colonne et il faut la supprimer et la recréer

meme en faisant ca ca marche pas.

d'ou le recours à la table système qui a tjs bien fonctionné depuis 6 mois environ que je travaille sur cette base.

a mon avis le soucis n'est pas dans la modif de la taille, mais la table elle meme, dés que je la touche (drop code par exemple) je me retrouve avec mon message d'erreur 183[/quote]
seb.49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 15h59   #8
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
J'ai pas dit que tu pouvais modifier la taille d'une colonne avec Alter...
Je dis qu'il est préférable d'utiliser Alter que de trafiquer les tables systemes...

Donc pour agrandir code à 200 :
1-
Code :
ALTER TABLE ACTIVITE ADD TEMP_COL VARCHAR(12);
2-On recopie les données
Code :
1
2
UPDATE ACTIVITE
SET TEMP_COL = code;
3-On modifie la code
Code :
ALTER TABLE ACTIVITE ALTER code TYPE VARCHAR(200);
4-On recopie dans l'autre sens
Code :
1
2
UPDATE ACTIVITE
SET code = TEMP_COL;
5-Dernière étape on supprime TEMP_COL
Code :
ALTER TABLE DROP TEMP_COL;
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 16h50   #9
Membre habitué
 
Avatar de seb.49
 
Développeur informatique
Inscription : octobre 2002
Messages : 273
Détails du profil
Informations personnelles :
Âge : 32

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2002
Messages : 273
Points : 136
Points : 136
L'etape 3 me donne

Code :
1
2
3
4
5
 
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, char 21
-ALTER
je vais passer par une table intermédiaire mais c'est chiant à cause des dépendance sur un champ et de la clé primaire qui se retrouve dans une autre table
seb.49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2003, 17h04   #10
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Ah zut c'est surement une des amélioration de la 6.0 car chez moi ca marche...
sinon tu peux remplacer cette etape par la suppression de la colonne puis sa création (car en fait c'est ce que fait la 3eme étape..)
3-
Code :
ALTER TABLE ACTIVITE DROP code;
3bis-
Code :
ALTER TABLE ACTIVITE ADD code VARCHAR(200);
La seule chose c'est que la colonne Code se retrouvera en fin je crois
Ce qui n'as pas d'incidence si tu n as pas utilisé de select * ou des trucs du genre numéro de la colonne plutot que sont nom
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2003, 16h18   #11
Membre habitué
 
Avatar de seb.49
 
Développeur informatique
Inscription : octobre 2002
Messages : 273
Détails du profil
Informations personnelles :
Âge : 32

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2002
Messages : 273
Points : 136
Points : 136
Par défaut Incompréhensible...

J'ai réussi à faire ce que je voulais mais pas avec ta méthode Barbibulle.

En fait j'avais commencé par ça mais echec, j'ai donc télécharger EMS QuickDesk qui m'a pondu une requete que j'ai execute ... Echec

J'ai donc essayé de supprimer liens, dépendance... impossible de faire simplement avec l'explorateur SQL

J'ai donc pour finir, télécharger IBEXPERT, qui m'a pondu la meme requete que QuickDesk et la ca a marche... j'ai réessayer et ca n'a plus marché, j'ai donc récupérer ma sauvegarde repasser la requete IBEXPERT, ca a marche, j'ai fait de ma sauvegarde mon fichier d'utilisation...

Bref, ca été très très compliqué (3 jours que je me casse le C..) et je comprend pas pourquoi aujourd'hui ca marche... Mon horoscope avait bien dit que le meilleurs moment de la journée serait 15h mais à ce point la...

Encore merci de ton aide Barbibulle, je ne t'avais pas encore remercier, c'est donc chose faite !!!
seb.49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2003, 17h16   #12
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
A ton service.
Ma méthode n'a pas marché probablement à cause des références externes.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h22.


 
 
 
 
Partenaires

Hébergement Web