Comment annuler une mise à jour de PostgreSQL
Lors de l'édition des enregistrements dans ma base de données PostgreSQL à l'aide de sql dans le terminal (dans ubuntu lucid), j'ai fait une mauvaise mise à jour.
Au lieu de
update mytable set start_time='13:06:00' where id=123;
J'ai tapé -
update mytable set start_time='13:06:00';
Donc, tous les enregistrements sont maintenant avoir le même start_time valeur.
Est-il un moyen d'annuler ce changement? Il y a quelques 500+ enregistrements dans la table, et je ne sais pas ce que le start_time valeur pour chaque enregistrement a été
Est-il perdu à jamais?
Pour l'avenir: vous ne devez pas exécuter avec validation automatique est activé.
les leçons apprises! toujours sauvegarder avant de faire les mises à jour, juste être sûr! si vous avez activé le Point-À-Temps de Récupération (PITR), cela pourrait être possible.
les leçons apprises! toujours sauvegarder avant de faire les mises à jour, juste être sûr! si vous avez activé le Point-À-Temps de Récupération (PITR), cela pourrait être possible.
OriginalL'auteur damon | 2012-10-14
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que c'était une opération qui est déjà engagé? Si oui, qu'est ce que "valider", vous ne pouvez pas revenir en arrière.
Certaines données peuvent être récupérées si vous avez de la chance. Arrêter la base de données MAINTENANT.
Voici une réponse que j'ai écrit sur le même sujet plus tôt. J'espère que c'est utile.
Ce qui pourrait être trop: Recoved lignes supprimées dans postgresql .
Moins que les données n'est absolument essentiel, il suffit de restaurer à partir de sauvegardes, il va être beaucoup plus facile et moins douloureux. Si vous n'avez pas de sauvegardes, considérez-vous profondément thwacked.
Prendre un niveau de système de fichiers de la copie de l'ensemble de la base de données et le mettre dans un endroit sûr.
OriginalL'auteur Craig Ringer
Si vous attrapez l'erreur et de mettre immédiatement en bas de toutes les applications à l'aide de la base de données et le mettre hors connexion, vous pouvez éventuellement utiliser la Point-à-Temps de Récupération (PITR) pour la relecture de votre Write Ahead Log (WAL) des fichiers jusqu'à, mais ne comprenant pas, le moment où l'errant transaction a été effectuée. Ce serait de retour à la base de données de l'état où il était avant, donc 'défaire' cette transaction.
Comme une approche pour une application de production de base de données, il a un certain nombre de limitations évidentes, mais il ya des circonstances dans lesquelles PITR peut être la meilleure option disponible, en particulier lorsque la perte de données critiques a eu lieu. Cependant, il n'est d'aucune valeur si l'archivage n'est pas déjà configuré avant que la corruption de l'événement.
https://www.postgresql.org/docs/current/static/continuous-archiving.html
Des capacités similaires avec d'autres moteurs de base de données relationnelle.
OriginalL'auteur hemp