DB Daniel: MySQL - Tabelle geleert, Daten wiederholen?

Ich habe gerade ausversehen meine Tabelle "geleert". Kann man die Daten wieder bekommen?

  1. 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

  2. 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

    1. 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";