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

PostgreSQL Discussion :

Revenir en arriere apres Update


Sujet :

PostgreSQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut Revenir en arriere apres Update
    J'ai fais un UPDATE malencontreux .... sans la clause where.
    Je voudrais donc revenir en arriere, comment faire?

    j'ai Postgres 8.2 qui tourne sous freeBSD 6.2

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Par défaut
    C possible ca ? Pas sur ...

  3. #3
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Non car Postgresql est en autocommit implicite donc si ton update ne faisait pas partie d'un bloc de transaction (begin ... commit/rollback), l'update a été commité par défaut et il est impossible de revenir en arrière (de rollbacker)
    Le seul moyen est de repartir d'un ancien dump ou d'une ancienne sauvegarde de ta base, en espérant que tu en as
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut
    Oui, je fais des backup tous les mois/semaines... m'enfin
    les logs dans pg_log ne peuvent pas servir à revenir en arriere?

  5. #5
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Tes backups sont des dumps (exports), des sauvegardes à froid (copie des fichiers base arrêtée) ou des sauvegardes à chaud (copie des fichiers base ouverte) ?
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut
    Mes backups sont des dumps à chaud, avec des clauses INSERT.
    C'est une grosse base, et je n'ai pas trouvé d'autre moyen que d'utiliser des insert (pas assez de RAM pour une restauration d'une base). Mais c'est un autre probleme

    Le probleme des insert, c'est que je ne peux pas les utiliser sur l'ancienne base sans effacer les anciennes lignes (car lié par des clef primaires, ce qui effacerait les autre données)... de plus, je ne sais pas si les inserts vont utiliser les mêmes "serial" que lors du dump.

  7. #7
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    Humm, tu peux rejouer les dernieres transactions avec les wal si tu les as activé.

    sinon pour ton soucis, le mieux, c'est de recharcher la table sous un autre nom, et après tu fais un update de la table avec comme clef primaire l'id de la table restauré.
    Rassures toi, bien que ton champ soit un serial, il n'y a pas de raison qu'il change les id (a cause des contraintes).

    un serial, ce n'est juste qu'un entier qui est appelé apres un insert sans précision de valeur (default).
    insert into matable (monchamp) values ('toto');
    equivaut à
    insert into matable (monid,monchamp) values (default, 'toto');

    lors d'une sauvegarde, le sql généré est
    insert into matable (monid,monchamp) values (33, 'toto');

    il met la valeur et non default, et donc tu peux faire un croisement avec ton ancienne table.

  8. #8
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Si tu as un ancien dump avec les lignes insert, il faudrait que tu y retrouves les lignes que tu as updatées pour y remettre les anciennes valeurs, c'est un travail de fourmi mais c'est soit ça, soit vider la table pour réimporter toute la table mais d'autres lignes seront écrasées par les anciennes, donc c'est pas génial
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut
    je vais faire ça. Ce n'est pas tellement un travail de fourmi puisque une commande d'UPDATE suffirait à le faire, apres avoir créé la table temporaire.

    Merci

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

Discussions similaires

  1. Erreur XSL-1000 après update websphere 5.1
    Par rraph2003 dans le forum Websphere
    Réponses: 1
    Dernier message: 18/08/2008, 15h42
  2. revenir en arriere
    Par Master C dans le forum Débuter
    Réponses: 13
    Dernier message: 27/02/2008, 15h11
  3. Revenir en arrière après des update
    Par charles_mourot dans le forum Oracle
    Réponses: 10
    Dernier message: 02/10/2006, 10h01
  4. Récuper PK après update
    Par orphenou dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 12/04/2006, 12h11
  5. revenir en arriere apres un effacement de document
    Par bourvil dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 11/01/2006, 15h31

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