web-dev-qa-db-fra.com

Comment puis-je annuler ma dernière commande de suppression dans MySQL?

J'ai accidentellement supprimé un très grand nombre de lignes d'une table ...

Comment puis-je le restaurer?

J'ai exécuté la requête en utilisant PuTTY .

Je serai reconnaissant si l'un d'entre vous peut me guider en toute sécurité hors de cette ...

49
Vijay

Si vous n'avez pas fait de sauvegarde, vous êtes assez confus.

90
Omry Yadan

Si vous n'avez pas encore validé la transaction, essayez rollback. Si vous avez déjà validé la transaction (par commit ou en quittant le client en ligne de commande), vous devez restaurer les données à partir de votre dernière sauvegarde.

26
Aaron Digulla

Un "rollback" ne fonctionne que si vous avez utilisé transactions . De cette façon, vous pouvez regrouper des requêtes et annuler toutes les requêtes si l'une d'entre elles échoue.

Mais si vous avez déjà validé la transaction (ou utilisé une requête DELETE standard), le seul moyen de récupérer vos données est de les récupérer à partir d'une sauvegarde effectuée précédemment.

10
Select0r

Utilisez la commande BEGIN TRANSACTION avant de lancer des requêtes. Pour que vous puissiez ROLLBACK choses à tout moment.

PAR EXEMPLE:

  1. commencer la transaction
  2. select * from Student
  3. supprimer de l'étudiant où Id = 2
  4. select * from Student
  5. retour en arrière
  6. select * from Student
5
Author PraWin

La réponse acceptée n'est pas toujours correcte. Si vous configurez la journalisation binaire sur MySQL, vous pouvez restaurer la base de données à n'importe quel point précédent pour lequel vous avez encore un instantané et un journal bin.

7.5 Récupération ponctuelle (incrémentielle) à l'aide du journal binaire est un bon point de départ pour en savoir plus sur cette fonctionnalité.

3
Phil Lello

En MySQL:

start transaction;

savepoint sp1;

delete from customer where ID=1;

savepoint sp2;

delete from customer where ID=2;

rollback to sp2;

rollback to sp1;
1
Shu Zhang

Si vous souhaitez restaurer des données, vous devez d’abord exécuter autocommit = 0, puis exécuter la requête delete, insert ou update.

Après avoir exécuté la requête, exécutez la restauration en arrière ...

0
Kishore Kishore

J'avais également supprimé certaines valeurs de ma base de développement, mais j'avais la même copie dans la base de données d'assurance qualité. J'ai donc créé un script et sélectionné l'option "type de données dans le script" sur "données uniquement" et sélectionné ma table.

Ensuite, j'ai reçu les instructions insert avec les mêmes données, puis j'ai exécuté le script sur ma base de développement.

0
Nikki