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

Firebird Discussion :

Index désactivés impossible à réactiver


Sujet :

Firebird

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Par défaut Index désactivés impossible à réactiver
    Bonjour,

    En ajoutant un champ dans une de mes tables et en déclarant ce champ comme étant une clef étrangère, j'ai obtenu le message suivant :

    Unsuccessful execution caused by an unavailable resource.
    Cannot create foreign key constraint FK_REL_OPE_RADIO_MODEM_3. Partner index does not exist or is inactive.
    Ce message m'a intrigué et j'ai donc vérifié mes index.
    En fait, tous les index de ma base de données sont désactivés, y compris les clefs primaires et étrangères !

    Comment cela se peut-il ?
    J'ai essayé de les réactiver, mais sans succès. A chaque fois, j'obtiens le message suivant :

    Unsuccessfull execution caused by an unavailable resource. Cannot create foreign key constraint FK_REL_OPE_RADIO_MODEM_3. Partner index does not exist or is inactive. Changes will be rolled back...
    J'ai essayé de faire un gbak/restore mais rien de changé quant au statut des index.

    Quelle est la solution, s'il y en a une ?

    Merci de votre aide.

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Par défaut
    Bonjour,

    Personne n'a d'idée ?
    Je viens de tomber sur un client qui utilise ma base et qui a le problème.
    Un backup/restore ne change rien à son problème non plus.

    La seule solution que j'ai trouvée à ce jour, c'est, en utilisant IBExpert, d'extraire les metadata, de supprimer le fichier fdb et de le reconstituer à partir d'un script basé sur les metadata extraites précédemment !

    Un peu brutal, non ?

  3. #3
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    pour activer tous les index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SET TERM !! ;
    EXECUTE BLOCK AS 
    DECLARE VARIABLE stmt VARCHAR(1000); 
    BEGIN for select 'ALTER INDEX '||rdb$index_name ||' ACTIVE;' from rdb$indices into :stmt 
    do EXECUTE STATEMENT :stmt; 
    END!!
    SET TERM ; !! 
    COMMIT;

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Par défaut
    Je teste ça tout de suite et je te tiens au courant...

    Utilisé dans IBExpert, le script déclenche une erreur.
    Ceci étant dit, cela m'a donné l'occasion de constater que les index systèmes (table [System indices]) sont bien tous actifs.
    Ceux qui sont désactivés, ce sont ceux correspondant aux clefs primaires et autres clefs étrangères de mes tables.
    Comment ces index peuvent-ils se désactiver ?
    Est-ce un signe de 'mauvaise santé' de ma base ?

  5. #5
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Citation Envoyé par engi Voir le message
    Utilisé dans IBExpert, le script déclenche une erreur.
    c'est un firebird 2.1?
    mais bon IBE, c'est pas toujours terrible
    passe le script avec isql
    Citation Envoyé par engi Voir le message
    Est-ce un signe de 'mauvaise santé' de ma base ?
    oui
    ce n'est pas normal
    sauf si qq a désactivé les index

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Par défaut
    Script testé sous ISQL.
    Même erreur

    Pour ce qui est de la désactivation des index, je me rends compte que c'est peut-être moi sans le vouloir après avoir utilisé le paramètre -I dans la ligne de commande d'une restauration avec GBAK.

    Cependant, ça n'explique pas qu'il soit maintenant impossible de les réactiver, ces index...

  7. #7
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Citation Envoyé par engi Voir le message
    Script testé sous ISQL.
    Même erreur
    quelle erreur ?
    Firebird 2.1 ?
    Citation Envoyé par engi Voir le message
    Pour ce qui est de la désactivation des index, je me rends compte que c'est peut-être moi sans le vouloir après avoir utilisé le paramètre -I dans la ligne de commande d'une restauration avec GBAK.
    oui

    Citation Envoyé par engi Voir le message
    Cependant, ça n'explique pas qu'il soit maintenant impossible de les réactiver, ces index...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER INDEX monindex ACTIVE;

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 663
    Billets dans le blog
    65
    Par défaut
    je pense que tout bonnement un ou plusieurs index 'UNIQUE' ont des clés en double .
    Une seule solution dans ce cas activer un a un pour trouver le(s) coupable(s)

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Par défaut
    Bonjour,

    Oui, c'est bien Firebird 2.1.

    L'erreur affichée à l'exécution du script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C:\Program Files\Firebird\Firebird_2_1\bin>isql -i d:\temp\indexon.sql
    Use CONNECT or CREATE DATABASE to specify a database
    Statement failed, SQLCODE = -901
    index unexpectedly deleted
    After line 9 in file d:\temp\indexon.sql
    Statement failed, SQLCODE = -901
    index unexpectedly deleted
    After line 10 in file d:\temp\indexon.sql
    Voilà le contenu du script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CONNECT 127.0.0.1:d:\temp\dialog900.fdb user SYSDBA password masterkey;
     
    SET TERM !! ;
    EXECUTE BLOCK AS 
    DECLARE VARIABLE stmt VARCHAR(1000); 
    BEGIN FOR SELECT 'ALTER INDEX '||rdb$index_name ||' ACTIVE;' FROM rdb$indices INTO :stmt 
    do EXECUTE STATEMENT :stmt; 
    END!!
    SET TERM ; !! 
    COMMIT;
    Enfin, pour information, si je tente une réactivation index par index en partant du dernier, j'arrive à tous les réactiver !

    En revanche, si je commence par le premier de la liste, j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Statement failed, SQLCODE = -904
    Cannot create foreign key constraint FK_IDENTIFIANTS_1.
    Partner index does not exist or is inactive.

Discussions similaires

  1. Désactiver puis réactiver le filtre automatique
    Par PierrotMfff dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/03/2015, 13h46
  2. Désactiver puis réactiver le filtre automatique
    Par ievtohs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2011, 19h12
  3. désactiver et réactiver l'aide de visual studio
    Par TSniper dans le forum Visual Studio
    Réponses: 0
    Dernier message: 22/04/2010, 22h45
  4. Réponses: 4
    Dernier message: 23/01/2009, 01h54
  5. Désactiver, réactiver Index
    Par Glutinus dans le forum Oracle
    Réponses: 7
    Dernier message: 26/12/2007, 23h28

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