|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2004 Messages : 6 ![]() |
Bonjour,
avant d'écrire ce post j'ai parcouru ce forum pour voir si je pouvais trouver de l'aide, mais n'ayant rien trouvé je me lance... Voici mon problème : je suis sous interbase 6.5, chaque semaine je fais un backup restore de ma base pour la rafraîchir car elle grossit énormément (70Mo). Ayant lu cette astuce sur les "bons plans d'interbase", il est vrai qu'après ma base est plus lègère ! Je fais cette opération à partir de IBConsole et habituellement tout ce passe facilement, or cette fois ci j'ai eu un message d'erreur lors du restore qui est le suivant : "Error 335544342 Action cancelled by trigger (3) to preserve data integrity Cannot deactivate primary index" et le restore s'arrête sur : gbak: creating indexes gbak: cannot commit index RDB$FOREIGN1949 gbak: ERROR: attempt to store duplicate value (visible to active transactions) in unique index "RDB$PRIMARY44" visiblement une donnée de ma base m'empêcherait de poursuivre le restore. Mais je veux bien réparer la donnée mais je ne sais pas comment la trouver ! Donc si quelqu'un pouvais me donner un petit coup de main cela serait cool. C'est mon premier post car jusqu'à présent j'ai réussi à trouver de l'aide via les autres post, ou sur le site developpez.com qui m'a beaucoup appris sur SQL. J'utilise SQL au boulot pour faire des requètes simples mais comme dans beaucoup de boîte il faut "s'autoformer" pour pouvoir assurer un minimum... Cordialement votre. |
|
|
00
|
|
|
#2 | |
![]() ![]() Inscription : janvier 2004 Messages : 2 123 ![]() |
Salut et bienvenue sur Developpez.com
Citation:
Je ne connais pas IBConsole mais en utilisant les IBX : IBRestoreService, il existe une option DeactivateIndexes qui permettrait probablement de contourner le problème. en espérant que cela pourra t'aider ... a bientot |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2004 Messages : 6 ![]() |
Désolé je suis vraiment une quiche...mais c'est quoi les IBX ???
et puis quelques part plutôt que de contourner le problème je préferai avoir une méthode pour réparer les données. Merci quand même |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 2 123 ![]() |
Salut,
IBX = InterBase Express, c'est la gamme de composant InterBase livré avec Delphi (InterBase et InterBase Admin) Je pense que le seul moyen de réparer le problème c'est : restorer la base de données en désactivant les indexes puis faire une recherche de doublons sur les indexes afin de supprimer l'enregistrement posant problème. Voila, je ne peux pas trop t'en dire plus car ... je n'en sais pas plus... A+ |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : septembre 2004 Messages : 6 ![]() |
merci pour le coup de main....
je ne suis pas assez calé je laisse tomber tant pis pour moi... |
|
|
00
|
|
|
#6 | |||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
La base avec lequel vous travaillez et dont vous avez fait un backup doit en effet avoir un probleme et ce n'est hélas que lors du restore que vous vous en appercevez.
Donc pour retrouver les données qui posent probleme il faut partir des informations contenues dans le message d'erreur : Citation:
Pour trouver la table qui pose probleme : Code :
|
|||
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : septembre 2004 Messages : 6 ![]() |
bonjour Barbibulle,
merci pour votre requète, elle permet de me dire que primary44 fait référence à la table "B_ART" . Le champ indexé sur ma table semble être un champ appelé "CODEARTIC" mais je n'ai pas de doublons (enfin je crois...) Question, est-il possible de migrer mes datas vers une base vide ??? Citation:
Autre Question => ma base risque t'elle d'être inutilisable ? Merci pour votre aide ! Pas évident de se servir d'interbase sans formation... |
|
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
La requête ci dessous vous permettra de connaitre les codeartic qui seraient en doubles. Code :
|
|||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : septembre 2004 Messages : 6 ![]() |
arg!
j'avais malheureusement raison, il n'y a pas de double sur cette table... ??? le gros mystère ??? j'ai vu que RDB$FOREIGN1949 fait référence à une table vide nommée E_OF2 je ne pige pas ? y-a t'il un danger pour la stabilité de ma base ? |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Autre piste vous avez une clé etrangère dans votre table qui pointe vers un enregistrement qui n'existe plus.
Il n'y a pas de danger. C'est juste que vous pouvez plus faire de backup/restore.... Si vous ne trouvez pas ça sans danger, c'est vous qui voyez |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : septembre 2004 Messages : 6 ![]() |
Merci Barbibulle pour votre coup de patte.
Je repars d'une base vide, je transfère toutes mes données. Dernière question, le fait de faire un backup Restore permet-il d'accélerer les interrogations ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com