Existe-t-il un moyen de restaurer après commit dans MySQL?
J'ai fait une grosse erreur que j'ai mis à jour une table sans clause 'where' dans MySQL: '(
Il est auto-commis.
Y a-t-il un moyen de revenir en arrière?
3 réponses
Non, il n'y a pas de requête qui "annule" une requête de modification de données validée.
Si vous avez une sauvegarde de la base de données, vous pouvez restaurer la sauvegarde et utiliser les outils DBA (dans le cas de MySQL, c'est mysqlbinlog) pour "rejouer" toutes les requêtes de modification de données des journaux depuis la sauvegarde vers la base de données, mais ignorer la requête problématique.
Si vous n'avez pas de sauvegarde et tous les journaux depuis cette sauvegarde, vous ne pouvez rien faire pour récupérer les données.
Rechercher les journaux de transactions. Je vais mettre à jour avec plus d'informations, mais les journaux ne peuvent rester autour pendant un temps limité si le temps est de l'essence!
Voir: http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html
Si vous avez activé mysql binlog et que le format est basé sur une ligne, vous pouvez obtenir la valeur de chaque ligne avant et après la mise à jour. En utilisant cela, vous pouvez restaurer l'état de la table.