IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Erreur lors de modification d'une table


Sujet :

SQL Firebird

  1. #1
    Membre actif Avatar de seb.49
    Profil pro
    ljgdfgdf
    Inscrit en
    Octobre 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ljgdfgdf

    Informations forums :
    Inscription : Octobre 2002
    Messages : 291
    Points : 209
    Points
    209
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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.. ??

  3. #3
    Membre actif Avatar de seb.49
    Profil pro
    ljgdfgdf
    Inscrit en
    Octobre 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ljgdfgdf

    Informations forums :
    Inscription : Octobre 2002
    Messages : 291
    Points : 209
    Points
    209
    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#)

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Code et de quel type ? un domaine ?

    Comment l'as tu modifié ?
    Alter ....?

  5. #5
    Membre actif Avatar de seb.49
    Profil pro
    ljgdfgdf
    Inscrit en
    Octobre 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ljgdfgdf

    Informations forums :
    Inscription : Octobre 2002
    Messages : 291
    Points : 209
    Points
    209
    Par défaut
    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

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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...

  7. #7
    Membre actif Avatar de seb.49
    Profil pro
    ljgdfgdf
    Inscrit en
    Octobre 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ljgdfgdf

    Informations forums :
    Inscription : Octobre 2002
    Messages : 291
    Points : 209
    Points
    209
    Par défaut
    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]

  8. #8
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ACTIVITE ADD TEMP_COL VARCHAR(12);
    2-On recopie les données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE ACTIVITE
    SET TEMP_COL = code;
    3-On modifie la code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ACTIVITE ALTER code TYPE VARCHAR(200);
    4-On recopie dans l'autre sens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE ACTIVITE
    SET code = TEMP_COL;
    5-Dernière étape on supprime TEMP_COL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE DROP TEMP_COL;

  9. #9
    Membre actif Avatar de seb.49
    Profil pro
    ljgdfgdf
    Inscrit en
    Octobre 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ljgdfgdf

    Informations forums :
    Inscription : Octobre 2002
    Messages : 291
    Points : 209
    Points
    209
    Par défaut
    L'etape 3 me donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ACTIVITE DROP code;
    3bis-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  11. #11
    Membre actif Avatar de seb.49
    Profil pro
    ljgdfgdf
    Inscrit en
    Octobre 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ljgdfgdf

    Informations forums :
    Inscription : Octobre 2002
    Messages : 291
    Points : 209
    Points
    209
    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 !!!

  12. #12
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    A ton service.
    Ma méthode n'a pas marché probablement à cause des références externes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/06/2008, 21h51
  2. Erreur lors la lecture d'une table PostgreSQL
    Par choko83 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 30/04/2008, 14h56
  3. Erreur lors d'insertion dans une table avec Indentity
    Par rad_hass dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/03/2008, 15h22
  4. date de dernière modification d'une table ?
    Par NiBicUs dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/12/2004, 18h11
  5. Afficher une dropdownlist lors de modif dans une DataGrid
    Par MiJack dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/11/2004, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo