[{"data":1,"prerenderedAt":390},["ShallowReactive",2],{"blog-de-ai-agent-deleted-my-database":3},{"id":4,"title":5,"body":6,"category":350,"cover":351,"coverAlt":351,"description":352,"draft":353,"extension":354,"faq":355,"image":371,"keywords":372,"meta":378,"navigation":379,"ogTitle":380,"path":381,"published":382,"seo":383,"stem":384,"tldr":385,"updated":382,"__hash__":389},"blog_de\u002Fblog\u002Fai-agent-deleted-my-database.md","Ein KI-Agent hat meine Supabase-Daten gelöscht. Was hole ich zurück?",{"type":7,"value":8,"toc":337},"minimark",[9,13,16,19,24,27,39,42,46,49,52,55,58,61,65,68,71,74,83,87,90,199,207,211,214,217,223,226,229,233,236,239,242,245,250,254,257,260,263,282,297,305,309,329],[10,11,12],"p",{},"Du hast den Agenten gebeten, ein paar Testzeilen aufzuräumen, oder eine\nMigration zu reparieren, die nicht durchlief. Er hat das SQL selbst geschrieben,\nes gegen das Projekt laufen lassen, das deine Live-App benutzt, und gemeldet,\ndass es erledigt sei. Die App lädt weiterhin. Die Tabelle ist leer.",[10,14,15],{},"Wenn ein KI-Agent Daten aus deiner Datenbank gelöscht hat, stand schon vorher\nfest, was du zurückholen kannst. Die nächsten Minuten entscheiden, wie viel\ndavon übrig bleibt.",[10,17,18],{},"Hier ist der Punkt, den die meisten Antworten darauf verfehlen. Sie sagen dir,\ndu sollst den Code zurücksetzen oder den Agenten bitten, es rückgängig zu\nmachen. Keines von beidem rührt deine Daten an, und während du es versuchst,\nwird das eine, was du noch in der Hand hast, still schlechter: was deine App\ngerade in die Datenbank schreibt.",[20,21,23],"h2",{"id":22},"was-kann-ich-zurückholen-nachdem-eine-ki-meine-daten-gelöscht-hat","Was kann ich zurückholen, nachdem eine KI meine Daten gelöscht hat?",[10,25,26],{},"Was in der letzten Kopie deiner Datenbank stand, die vor dem Löschen gezogen\nwurde, und nichts, was danach entstanden ist.",[10,28,29,30,34,35,38],{},"Das ist die ganze Antwort, und das meiste daran wurde vor Wochen entschieden. Es\ngibt hier keinen forensischen Schritt, nichts zu entlöschen, kein Protokoll, das\nin Supabase darauf wartet, abgespielt zu werden. Eine Zeile, die ein ",[31,32,33],"code",{},"DELETE","\noder ein ",[31,36,37],{},"DROP TABLE"," entfernt hat, ist in dem Moment aus der Datenbank\nverschwunden, in dem die Anweisung bestätigt wird. Zurück kommt eine Kopie, und\neine Kopie existiert entweder oder eben nicht.",[10,40,41],{},"Vor dir liegen also zwei Aufgaben. Herausfinden, welche Kopien es gibt. Und\nverhindern, dass die Lücke zwischen der neuesten und jetzt noch teurer wird, als\nsie ohnehin schon ist.",[20,43,45],{"id":44},"halte-zuerst-an-was-in-die-datenbank-schreibt","Halte zuerst an, was in die Datenbank schreibt",[10,47,48],{},"Bevor du nach einem Backup suchst, schalte alles ab, was neue Zeilen schreibt.\nLesen ist in Ordnung.",[10,50,51],{},"Dafür gibt es zwei Gründe, und der zweite erwischt Leute.",[10,53,54],{},"Der erste: Eine Wiederherstellung ist keine Zusammenführung. Eine Kopie\nzurückzuspielen ersetzt die Tabellen darin durch das, was sie damals\nenthielten, und alles danach Geschriebene geht mit. Ein Kunde, der sich in der\nStunde anmeldet, in der du das hier liest, ist eine Zeile, die du später selbst\nlöschst, in einem Schritt, für den du dich bereits entschieden hast.",[10,56,57],{},"Der zweite: Manche Wege werden schlechter, während du wartest. Die\nWiederherstellung auf einen Zeitpunkt bei Supabase dreht das ganze Projekt auf\neine Minute deiner Wahl zurück, und je weiter sich die App vom Fehler entfernt,\ndesto mehr echte Arbeit wirft dieses Zurückdrehen zusammen mit dem Schaden weg.",[10,59,60],{},"Eine Stunde hinter einem Wartungshinweis ist billig. Jemandem zu erklären, dass\nseine Bestellung angelegt und dann absichtlich entfernt wurde, ist es nicht.",[20,62,64],{"id":63},"kann-ich-den-agenten-bitten-es-rückgängig-zu-machen","Kann ich den Agenten bitten, es rückgängig zu machen?",[10,66,67],{},"Nein. Er hatte deine Zeilen nie.",[10,69,70],{},"Der Agent hat eine Anweisung geschrieben, und deine Datenbank hat sie\nausgeführt. Was er jetzt hat, ist ein Protokoll dieses Gesprächs, und das ist\netwas anderes als eine Kopie der Tabelle. Bitte ihn, das Löschen umzukehren, und\ndu bekommst eine selbstsichere Antwort, plausibles SQL und keine Daten.",[10,72,73],{},"Über das Risiko lohnt es sich genau zu sprechen, weil die Bitte harmlos wirkt.\nDen Agenten erneut laufen zu lassen heißt: eine zweite unbeaufsichtigte Sitzung\ngegen eine Live-Datenbank, die bereits etwas verloren hat. Entscheidet er, die\nfehlende Tabelle repariere man am besten, indem man eine anlegt, steht jetzt\neine neue leere Tabelle dort, wo die alte war, und du hast den Verlust schwerer\nbeschreibbar gemacht für den, der dir als Nächstes hilft.",[10,75,76,77,82],{},"Nimm ihn vom Projekt, bis du weißt, wo du stehst. Dasselbe gilt für den\nVersionsverlauf deines Builders: Deinen Code auf heute Morgen zurückzusetzen\nstellt deine Seiten wieder her und lässt deine Daten genau dort, wo sie jetzt\nsind, aus\n",[78,79,81],"a",{"href":80},"\u002Fblog\u002Fversion-history-is-not-a-backup","Gründen, die man einmal verstanden haben sollte",".",[20,84,86],{"id":85},"wo-du-nachsiehst-in-dieser-reihenfolge","Wo du nachsiehst, in dieser Reihenfolge",[10,88,89],{},"Arbeite diese Liste ab und halte bei der ersten Stelle an, die es gibt. Sie ist\ndanach sortiert, wie viel von deinen Daten zurückkommt, und nicht danach, wie\neinfach es ist.",[91,92,93,109],"table",{},[94,95,96],"thead",{},[97,98,99,103,106],"tr",{},[100,101,102],"th",{},"Wo du nachsiehst",[100,104,105],{},"Was zurückkommen kann",[100,107,108],{},"Was vorher schon wahr sein musste",[110,111,112,124,135,146,161,172,187],"tbody",{},[97,113,114,118,121],{},[115,116,117],"td",{},"Supabase Wiederherstellung auf einen Zeitpunkt",[115,119,120],{},"Die Datenbank so, wie sie in einer Minute deiner Wahl war, auch der Minute vor dem Löschen",[115,122,123],{},"Ein bezahlter Tarif mit PITR-Option, vor heute hinzugebucht",[97,125,126,129,132],{},[115,127,128],{},"Tägliches Supabase-Backup",[115,130,131],{},"Die Datenbank so, wie sie bei der letzten automatischen Kopie war",[115,133,134],{},"Ein bezahlter Tarif",[97,136,137,140,143],{},[115,138,139],{},"Ein verwalteter Backup-Dienst",[115,141,142],{},"Die Datenbank so, wie sie bei der letzten geprüften Kopie des Dienstes war",[115,144,145],{},"Du hast einen vor heute angebunden",[97,147,148,155,158],{},[115,149,150,151,154],{},"Ein ",[31,152,153],{},"pg_dump",", das du selbst gezogen hast",[115,156,157],{},"Alles in der Datei, und die ist so alt wie dein letztes Daran-Denken",[115,159,160],{},"Die Datei existiert und wurde fertig geschrieben",[97,162,163,166,169],{},[115,164,165],{},"Eine Soft-Delete- oder Audit-Tabelle in deiner App",[115,167,168],{},"Nur die Zeilen, über die deine App ohnehin Buch führte",[115,170,171],{},"Du hast es absichtlich so gebaut",[97,173,174,177,184],{},[115,175,176],{},"Der Versionsverlauf deines Builders",[115,178,179],{},[180,181,183],"key-verdict",{"type":182},"danger","Nichts",[115,185,186],{},"Er versioniert deinen Code, und deine Daten liegen in einem anderen Dienst.",[97,188,189,192,196],{},[115,190,191],{},"Den Agenten noch einmal fragen",[115,193,194],{},[180,195,183],{"type":182},[115,197,198],{},"Er hatte nie eine Kopie deiner Zeilen.",[10,200,201,202,206],{},"Jeder Weg, der überhaupt etwas zurückgibt, hat dieselbe Voraussetzung, und die\nentscheidet die Sache: Er musste vor dem Löschen schon da sein. Keiner lässt\nsich jetzt anschalten und rückwärts reichen.\n",[78,203,205],{"href":204},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Welchen Supabase-Tarif du hast, entscheidet über die oberen zwei",",\nund das Nachsehen dauert etwa zwei Minuten.",[20,208,210],{"id":209},"was-zurückkommt-und-was-in-die-lücke-fällt","Was zurückkommt und was in die Lücke fällt",[10,212,213],{},"Die Kopie, so wie sie war, und nichts, was danach passiert ist.",[10,215,216],{},"Die Zeilen, die zwischen dieser Kopie und dem Löschen entstanden sind, sind\nnicht beschädigt und liegen nicht irgendwo unglücklich herum. Sie wurden\nnirgends aufgeschrieben außer in der Datenbank, aus der sie entfernt wurden. Das\nist der Teil, den man vor einer leeren Tabelle schwer akzeptiert, weil etwas zu\nverlieren sonst heißt, dass es noch irgendwo ist.",[218,219],"diagram",{"alt":220,"caption":221,"src":222},"Eine Zeitleiste von links nach rechts. Drei abgehakte Kopien liegen darauf, und die Zeilen, die jede von ihnen hält, sind darüber als kleine gefüllte Punkte gezeichnet. Nach der letzten Kopie kommen weitere Punkte dazu, dann markiert ein rotes Kreuz das Löschen. Die Punkte zwischen der letzten Kopie und dem Kreuz liegen in einem schattierten Band und sind jeweils durchgestrichen.","Eine Wiederherstellung bringt dich zurück zur letzten Kopie. Die Zeilen im schattierten Band wurden nirgends sonst aufgeschrieben, also holt sie nichts zurück.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fthe-gap-1600x460.png",[10,224,225],{},"Wie breit dieses Band ist, hängt allein daran, was die Kopien gezogen hat. Ein\nnächtliches Backup kann einen ganzen Arbeitstag hineinlegen. Die\nWiederherstellung auf einen Zeitpunkt verengt es auf eine Minute, und das ist\nder Grund, warum sie extra kostet. Ein Dump, den du gezogen hast, als es dir\ngerade einfiel, legt hinein, wie lange das her ist.",[10,227,228],{},"Es gibt eine Variante, in der die Lücke kaum zählt, bei einer App, deren Daten\nüberwiegend deine eigenen Inhalte sind und sich langsam ändern. Und es gibt\neine, in der sie sehr zählt: alles mit Bestellungen, Nachrichten oder\nAnmeldungen, wo ein Tag Zeilen ein Tag Menschen ist, denen es auffällt.",[20,230,232],{"id":231},"der-agent-hat-einen-teil-davon-gelöscht-nicht-alles","Der Agent hat einen Teil davon gelöscht, nicht alles",[10,234,235],{},"Dann hast du eine echte Wahl zu treffen, und keine der beiden Antworten ist\nsauber.",[10,237,238],{},"Eine Wiederherstellung legt nicht die fehlenden Zeilen zurück und lässt den Rest\nin Ruhe. Sie ersetzt die Tabellen der Kopie durch das, was diese Tabellen damals\nenthielten, komplett. Wiederherstellen holt zurück, was der Agent entfernt hat,\nund macht jede gute Zeile rückgängig, die seitdem geschrieben wurde. Nicht\nwiederherstellen behält die guten Zeilen und lässt das Loch.",[10,240,241],{},"Was richtig ist, hängt daran, wie viel echte Arbeit nach der Kopie liegt. Lautet\ndie Antwort fast keine, stell wieder her und mach deinen Tag weiter. Lautet sie\ndrei Tage Kundendaten, gewinnt meist der langsamere Weg: die überlebenden Zeilen\nzuerst exportieren, wiederherstellen, dann die exportierten Zeilen obendrauf\nzurücklegen. Das ist fummelig, und es ist der einzige Weg, der nichts verliert.",[10,243,244],{},"Es ist auch das Argument dafür, die Datenbank in ihrem jetzigen kaputten Zustand\nzu kopieren, bevor du überhaupt etwas anfasst. Wie du dich auch entscheidest, du\nwillst zu dem Stand zurückkönnen, mit dem du angefangen hast.",[218,246],{"alt":247,"caption":248,"src":249},"Drei Datenbankformen nebeneinander. Die erste ist der aktuelle Stand, durchgestrichen, mit einem Pfeil, der in eine abgehakte, beiseitegelegte Kopie davon führt. Die zweite ist der gewählte Wiederherstellungspunkt, der eingespielt wird. Ein Pfeil führt von der beiseitegelegten Kopie zum Ergebnis zurück und zeigt, dass sich auch die Wiederherstellung umkehren lässt.","Kopiere den kaputten Stand, bevor du ihn ersetzt. Das ist der Unterschied zwischen einer Entscheidung, die du revidieren kannst, und einer, die du nicht revidieren kannst.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fsafety-copy-first-1600x520.png",[20,251,253],{"id":252},"so-läuft-dieselbe-stunde-wenn-es-schon-eine-kopie-gibt","So läuft dieselbe Stunde, wenn es schon eine Kopie gibt",[10,255,256],{},"Kürzer, und eher eine Entscheidung als eine Suche. Du wählst eine Kopie, du\nsiehst nach, was sie enthielt, und du drückst den Knopf.",[10,258,259],{},"Genau das macht Reeve Care: geprüfte Kopien deiner Supabase-Datenbank nach\nZeitplan, verschlüsselt und außerhalb deines Supabase-Kontos aufbewahrt, mit\neiner Wiederherstellung auf einen Klick dahinter. Bevor eine Wiederherstellung\nläuft, zieht sie eine frische Kopie des aktuellen Stands, damit auch sie sich\nrückgängig machen lässt.",[10,261,262],{},"Die Grenzen gehören in denselben Atemzug, denn nur wer sie kennt, kann\nentscheiden, ob es passt:",[264,265,266,270,273,276,279],"ul",{},[267,268,269],"li",{},"Es kopiert deine Datenbank, und die Dateien, die deine Nutzer hochgeladen haben, sobald du deine Storage-Buckets verbindest. Das ist optional und braucht einen zweiten Schlüssel.",[267,271,272],{},"Es arbeitet heute mit Supabase und mit sonst nichts.",[267,274,275],{},"Du stellst auf eine Kopie wieder her, die existiert, nicht auf eine beliebige Minute, die du nennst. Schlimmstenfalls verlierst du ein Intervall, also bis zu einer Nacht im Einstiegstarif und weniger in den beiden darüber.",[267,277,278],{},"Anmeldekonten werden nie angerührt. Niemand wird ausgeloggt, gelöscht oder zurückgeholt.",[267,280,281],{},"Der Datenbankschlüssel, den es aufbewahrt, kann nur lesen, und das war das Versprechen, als du ihn angebunden hast. Daten zurückzuschreiben braucht einen, der schreiben darf, also fragt eine Wiederherstellung jedes Mal nach deinem Datenbankpasswort und behält keines davon. Der optionale Schlüssel für deine Dateien kann schreiben, weil Supabase für Storage keinen Nur-Lese-Schlüssel ausgibt, und die Seite, auf der du ihn übergibst, sagt das vorher.",[10,283,284,288,289,291,292,296],{},[78,285,287],{"href":286},"\u002F#pricing","Was die einzelnen Tarife abdecken",", steht auf der Startseite. Willst\ndu dafür nichts zahlen, ist die schlichte Fassung desselben Schutzes ein\n",[31,290,153],{}," nach einem Zeitplan, den du wirklich einhältst, aufbewahrt an einem\nOrt, den der Verlust deines Supabase-Kontos nicht mitnimmt.\n",[78,293,295],{"href":294},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Die drei Wege und was jedem davon entgeht","\ngeht das ohne Verkaufsrede durch.",[10,298,299,300,304],{},"Diese Stunde ist auf der ",[78,301,303],{"href":302},"\u002Fsupabase-backups","Seite zu Supabase-Backups"," Kopie\nfür Kopie dargestellt.",[20,306,308],{"id":307},"was-du-jetzt-sofort-tun-solltest","Was du jetzt sofort tun solltest",[310,311,312],"key-takeaways",{},[264,313,314,317,320,323,326],{},[267,315,316],{},"Halte alles an, was in die Datenbank schreibt. Das ist der einzige Schritt hier, der teurer wird, je länger du ihn liegen lässt.",[267,318,319],{},"Stelle fest, welche Kopien es gibt, bevor du irgendetwas entscheidest: zuerst dein Supabase-Tarif, dann jeder Dump, den du selbst gezogen hast, dann die Frage, ob deine App über gelöschte Zeilen Buch führt.",[267,321,322],{},"Kopiere die Datenbank so, wie sie jetzt ist, kaputt und alles. Was du als Nächstes auch tust, du willst einen Weg hierher zurück.",[267,324,325],{},"Prüfe nach einer Wiederherstellung, ob die App noch schreiben kann. Eine Datenbank, die richtig liest und ein Insert verweigert, ist eine halbfertige Wiederherstellung, und nur ein Insert beweist es.",[267,327,328],{},"Wenn das Akute vorbei ist, richte die Kopie ein, die daraus ein Zehn-Minuten-Problem statt eines Vormittags gemacht hätte.",[10,330,331,332,336],{},"Bevor du diesen Tab schließt: Öffne dein Supabase-Projekt und finde heraus, ob\nüberhaupt irgendetwas deine Datenbank kopiert, und schreib dir auf, wo diese\nKopie liegt. Die ",[78,333,335],{"href":334},"\u002Fchecklist","10-Minuten-Sicherheitscheckliste"," deckt das\nzusammen mit dem Übrigen ab, was bei einer frisch gestarteten App zu bestätigen\nist.",{"title":338,"searchDepth":339,"depth":339,"links":340},"",3,[341,343,344,345,346,347,348,349],{"id":22,"depth":342,"text":23},2,{"id":44,"depth":342,"text":45},{"id":63,"depth":342,"text":64},{"id":85,"depth":342,"text":86},{"id":209,"depth":342,"text":210},{"id":231,"depth":342,"text":232},{"id":252,"depth":342,"text":253},{"id":307,"depth":342,"text":308},"Backups",null,"Ein KI-Agent hat Daten aus deiner Datenbank gelöscht. Was du zurückholst, stand schon vorher fest, und die nächsten Minuten entscheiden über den Rest.",false,"md",[356,359,362,365,368],{"q":357,"a":358},"Ein KI-Agent hat Zeilen in meiner Supabase-Datenbank gelöscht. Bekomme ich sie zurück?","Nur aus einer Kopie, die vor dem Lauf entstanden ist. Finde also zuerst heraus, ob es eine gibt. Sieh nach, was dein Supabase-Tarif enthält, dann nach jedem Dump, den du selbst gezogen hast, dann danach, ob deine App zufällig über gelöschte Zeilen Buch führt. Gibt es nichts davon, sind die Zeilen weg, und keine Arbeit an der App ändert daran etwas. Kläre das, bevor du irgendetwas Neues in die Datenbank schreibst.",{"q":360,"a":361},"Kann ich den Agenten bitten, die Daten zurückzulegen?","Nein. Der Agent hatte deine Zeilen nie. Er hat eine Anweisung an deine Datenbank geschickt, und die Datenbank hat sie ausgeführt; was er jetzt hat, ist ein Protokoll des Gesprächs und keine Kopie der Tabelle. Ihn zu bitten, das Löschen umzukehren, bringt dir eine selbstsichere Antwort und keine Daten. Und es heißt eine zweite unbeaufsichtigte Sitzung gegen eine Datenbank, die bereits etwas verloren hat.",{"q":363,"a":364},"Ich bin auf dem kostenlosen Supabase-Tarif. Gibt es überhaupt etwas zurückzuholen?","Von Supabase nicht. Automatische Backups beginnen bei den bezahlten Tarifen, und die Wiederherstellung auf einen Zeitpunkt ist eine Zusatzoption darüber, also liegt bei einem kostenlosen Projekt nirgends eine Kopie von gestern. Bleiben ein Dump, den du selbst gezogen hast, oder eine Soft-Delete- oder Audit-Tabelle, die deine App ohnehin geschrieben hat. Prüfe beides, bevor du vom Schlimmsten ausgehst, und prüfe es, bevor du die App weiter benutzt.",{"q":366,"a":367},"Soll ich die App weiterlaufen lassen, während ich überlege?","Schalte ab, was schreibt. Lesen ist in Ordnung. Neue Zeilen sind gleich doppelt ein Problem: Eine Kopie zurückzuspielen entfernt alles, was danach dazukam, also sind Bestellungen von jetzt Daten, die du später selbst löschst, und ein Zurückdrehen auf einen Zeitpunkt hat umso mehr echte Arbeit wegzuwerfen, je länger du wartest. Ein Wartungshinweis für eine Stunde kostet weniger als der zweite Verlust.",{"q":369,"a":370},"Der Agent hat einige Zeilen gelöscht, aber nicht alle. Stelle ich trotzdem alles wieder her?","Das ist der unangenehme Fall, und eine saubere Antwort gibt es nicht. Eine Wiederherstellung ersetzt die Tabellen der Kopie komplett, holt also zurück, was du verloren hast, und macht zugleich jede gute Zeile rückgängig, die seitdem geschrieben wurde. Was richtig ist, hängt daran, wie viel echte Arbeit nach der Kopie liegt. Ist es viel, ist es langsamer und verliert nichts, die überlebenden Zeilen zuerst zu exportieren und sie nach der Wiederherstellung obendrauf zurückzulegen.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",[373,374,375,376,377],"ki hat meine datenbank daten gelöscht wiederherstellen","ki agent hat meine daten gelöscht","cursor hat meine datenbank gelöscht","ki agent hat tabelle gelöscht","daten wiederherstellen nach ki löschung",{},true,"Ein KI-Agent hat meine Supabase-Daten gelöscht","\u002Fblog\u002Fai-agent-deleted-my-database","2026-08-21",{"title":5,"description":352},"blog\u002Fai-agent-deleted-my-database",[386,387,388],"Wenn ein KI-Agent Daten aus deiner Datenbank gelöscht hat, kannst du zurückholen, was in der letzten Kopie davor stand. Was danach entstand, wurde nirgends sonst aufgeschrieben.","Halte an, was neue Zeilen schreibt, bevor du irgendetwas anderes tust. Eine Wiederherstellung entfernt alles, was nach der Kopie dazukam, also ist eine Anmeldung von jetzt eine Zeile, die du selbst löschst.","Der Agent kann die Zeilen nicht zurücklegen. Er hatte sie nie, und ihn erneut gegen eine Live-Datenbank laufen zu lassen ist eine weitere Gelegenheit, mehr zu verlieren.","pzHayFitMC2skthJOANwxjG5C6RtQJ3p-eqM4oH5Tlk",1787826048205]