web-dev-qa-db-fra.com

Existe-t-il un moyen de revenir en arrière après une validation dans MySQL?

J'ai fait une grosse erreur en mettant à jour un tableau sans la clause 'where' dans MySQL: '(

C'est auto-engagé.

Est-il possible de revenir en arrière?

22
Johnny Lim

Non, aucune requête n'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, il s'agit de mysqlbinlog ) pour "rejouer" toutes les requêtes de modification de données à partir des journaux depuis la sauvegarde dans la base de données, mais ignorez la requête qui pose problème.

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.

12
Bohemian

Recherchez les journaux de transactions. Je mettrai à jour avec plus d'informations mais les journaux ne peuvent rester que pendant un temps limité, le temps est donc essentiel!

Voir: http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html

1
Kyle

Si vous avez activé mysql binlog et que son format est basé sur ROW, 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.

0
Srinivash Arumugam