MySQL - Tabelle geleert, Daten wiederholen?
DB Daniel
- datenbank
0 Vinzenz Mai0 Hans0 dedlfix
Ich habe gerade ausversehen meine Tabelle "geleert". Kann man die Daten wieder bekommen?
Hallo Daniel,
Ich habe gerade ausversehen meine Tabelle "geleert". Kann man die Daten wieder bekommen?
aus dem Backup, das Du vor dieser Aktion erstellt hast.
Ansonsten: Nein, es gibt kein "undelete". Was weg ist, ist weg.
Freundliche Grüße
Vinzenz
Hi !
Nun, wenn ich unter ORACLE einen delete mache und noch NICHT "commit" gesagt habe, dann ist die Tabelle zwar für die anderen zum Schreiben gesperrt, sie sehen aber noch den Zustand vor dem delete. Somit würde ich mich ein zweites Mal unter ORACLE einloggen, ein
create backup_table as select * from tabelle_wo_ich_delete_gemacht_habe;
ausführen, danach die geleerte Tabelle committen, löschen und durch ein
create tabelle_wo_ich_delete_gemacht_habe as select * from backup_table;
wieder anlegen.
Vielleicht klappt so etwas ähnliches mit mySQL. Daß Du bei einem zweiten Aufruf der Datenbank vielleicht ein Warnung kriegst, daß die Tabelle nur lesend bearbeitet werden kann, Du aber noch die alten Werte siehst und eine Kopie dieser Tabelle anlegen kannst.
Viel Glück!
Gruß
Hans
echo $begrüßung;
Nun, wenn ich unter ORACLE einen delete mache und noch NICHT "commit" gesagt habe, dann ist die Tabelle zwar für die anderen zum Schreiben gesperrt, sie sehen aber noch den Zustand vor dem delete. Somit würde ich mich ein zweites Mal unter ORACLE einloggen, ein
create backup_table as select * from tabelle_wo_ich_delete_gemacht_habe;
ausführen, danach die geleerte Tabelle committen, löschen und durch ein
create tabelle_wo_ich_delete_gemacht_habe as select * from backup_table;
wieder anlegen.
Warum nimmst du in dem Fall kein Rollback?
Und ja, MySQL kennt das auch. Voraussetzung ist eine Storage Engine, die Transaktionen kann, wie beispielsweise die InnoDB. Der Standardfall wird aber die MyISAM sein, die das nicht kann. Weitere Voraussetzung ist, dass die Verbindung noch besteht und nicht beispielsweise am Script-Ende automatisch abgebaut wurde, denn das wirkt bei einer laufenden Transaktion wie ein Commit.
echo "$verabschiedung $name";