[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"blog-it-ai-agent-deleted-my-database":3},{"id":4,"title":5,"body":6,"category":349,"cover":350,"coverAlt":350,"description":351,"draft":352,"extension":353,"faq":354,"image":370,"keywords":371,"meta":377,"navigation":378,"ogTitle":379,"path":380,"published":381,"seo":382,"stem":383,"tldr":384,"updated":381,"__hash__":388},"blog_it\u002Fblog\u002Fai-agent-deleted-my-database.md","Un agente IA ha cancellato i miei dati Supabase. Cosa recupero?",{"type":7,"value":8,"toc":336},"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,304,308,328],[10,11,12],"p",{},"Hai chiesto all'agente di ripulire qualche riga di test, o di sistemare una\nmigrazione che non voleva passare. Ha scritto lui stesso l'SQL, l'ha eseguito\ncontro il progetto che usa la tua app in produzione, e ti ha detto che era\nfatto. L'app si carica ancora. La tabella è vuota.",[10,14,15],{},"Quando un agente IA ha cancellato dati dal tuo database, quello che puoi\nrecuperare era già deciso prima che partisse. I prossimi minuti decidono quanto\ndi quello sopravvive.",[10,17,18],{},"Ecco il punto che quasi tutte le risposte a questa domanda sbagliano. Ti dicono\ndi tornare indietro sul codice, o di chiedere all'agente di annullare. Nessuna\ndelle due tocca i tuoi dati, e mentre ci provi l'unica cosa che hai ancora in\nmano peggiora in silenzio: quello che la tua app sta scrivendo nel database\nproprio adesso.",[20,21,23],"h2",{"id":22},"cosa-posso-recuperare-dopo-che-una-ia-ha-cancellato-i-miei-dati","Cosa posso recuperare dopo che una IA ha cancellato i miei dati?",[10,25,26],{},"Quello che stava nell'ultima copia del tuo database fatta prima della\ncancellazione, e niente di quello che è nato dopo.",[10,28,29,30,34,35,38],{},"Questa è tutta la risposta, e la maggior parte si è decisa settimane fa. Qui non\nc'è un passaggio da periti, niente da scancellare, nessun log che aspetta dentro\nSupabase di essere rigiocato. Una riga tolta da un ",[31,32,33],"code",{},"DELETE"," o da un ",[31,36,37],{},"DROP TABLE","\nè sparita dal database nel momento in cui l'istruzione viene confermata. Quello\nche torna è una copia, e una copia o esiste o non esiste.",[10,40,41],{},"Quindi davanti hai due compiti. Scoprire quali copie esistono. E impedire che il\ndivario fra la più recente e adesso costi più di quanto già costa.",[20,43,45],{"id":44},"prima-di-tutto-ferma-ciò-che-scrive-nel-database","Prima di tutto: ferma ciò che scrive nel database",[10,47,48],{},"Prima di metterti a cercare un backup, spegni tutto ciò che scrive righe nuove.\nLeggere non è un problema.",[10,50,51],{},"Le ragioni sono due, e la seconda coglie di sorpresa.",[10,53,54],{},"La prima è che un ripristino non è una fusione. Rimettere una copia sostituisce\nle tabelle che contiene con quello che quelle tabelle avevano allora, e tutto\nciò che è stato scritto dopo se ne va con loro. Un cliente che si registra\nnell'ora che passi a leggere questo è una riga che cancellerai tu stesso, più\navanti, in un passaggio che hai già deciso di fare.",[10,56,57],{},"La seconda è che alcune strade peggiorano mentre aspetti. Il ripristino a un\nmomento preciso di Supabase riporta l'intero progetto a un minuto che scegli tu,\nquindi più l'app si allontana dall'errore, più lavoro autentico quel ritorno\nbutta via insieme al danno.",[10,59,60],{},"Un'ora dietro un avviso di manutenzione costa poco. Spiegare a qualcuno che il\nsuo ordine è stato creato e poi tolto apposta costa molto di più.",[20,62,64],{"id":63},"posso-chiedere-allagente-di-annullare","Posso chiedere all'agente di annullare?",[10,66,67],{},"No. Non ha mai avuto le tue righe.",[10,69,70],{},"L'agente ha scritto un'istruzione e il tuo database l'ha eseguita. Quello che ha\nadesso è la trascrizione di quella conversazione, che è una cosa diversa da una\ncopia della tabella. Chiedigli di annullare la cancellazione e ottieni una\nrisposta sicura di sé, dell'SQL plausibile e nessun dato.",[10,72,73],{},"Sul rischio conviene essere precisi, perché la richiesta sembra innocua.\nRilanciare l'agente significa una seconda sessione senza sorveglianza contro un\ndatabase in produzione che ha già perso qualcosa. Se decide che il modo di\nsistemare una tabella mancante è crearne una, adesso hai una tabella nuova e\nvuota dove stava la vecchia, e hai reso la perdita più difficile da descrivere a\nchi ti aiuterà dopo.",[10,75,76,77,82],{},"Toglilo dal progetto finché non sai dove sei. Lo stesso vale per la cronologia\ndelle versioni del tuo builder: riportare il codice a stamattina ripristina le\ntue pagine e lascia i tuoi dati esattamente dove sono adesso, per\n",[78,79,81],"a",{"href":80},"\u002Fblog\u002Fversion-history-is-not-a-backup","ragioni che vale la pena capire una volta",".",[20,84,86],{"id":85},"dove-guardare-in-questordine","Dove guardare, in quest'ordine",[10,88,89],{},"Scendi lungo questa lista e fermati alla prima voce che esiste. È ordinata per\nquanti dei tuoi dati tornano indietro, che non è l'ordine di quanto sia facile.",[91,92,93,109],"table",{},[94,95,96],"thead",{},[97,98,99,103,106],"tr",{},[100,101,102],"th",{},"Dove guardare",[100,104,105],{},"Cosa può restituire",[100,107,108],{},"Cosa doveva già essere vero",[110,111,112,124,135,146,161,172,187],"tbody",{},[97,113,114,118,121],{},[115,116,117],"td",{},"Ripristino Supabase a un momento preciso",[115,119,120],{},"Il database com'era in un minuto che scegli tu, compreso quello prima della cancellazione",[115,122,123],{},"Un piano a pagamento con l'opzione PITR, attivata prima di oggi",[97,125,126,129,132],{},[115,127,128],{},"Backup giornaliero di Supabase",[115,130,131],{},"Il database com'era all'ultima copia automatica",[115,133,134],{},"Un piano a pagamento",[97,136,137,140,143],{},[115,138,139],{},"Un servizio di backup gestito",[115,141,142],{},"Il database com'era all'ultima copia verificata di quel servizio",[115,144,145],{},"Ne hai collegato uno prima di oggi",[97,147,148,155,158],{},[115,149,150,151,154],{},"Un ",[31,152,153],{},"pg_dump"," che hai lanciato tu",[115,156,157],{},"Tutto quello che sta nel file, vecchio quanto l'ultima volta che ci hai pensato",[115,159,160],{},"Il file esiste e ha finito di essere scritto",[97,162,163,166,169],{},[115,164,165],{},"Una tabella di cancellazione morbida o di audit",[115,167,168],{},"Solo le righe di cui la tua app teneva già traccia",[115,170,171],{},"L'hai costruita così di proposito",[97,173,174,177,184],{},[115,175,176],{},"La cronologia delle versioni del tuo builder",[115,178,179],{},[180,181,183],"key-verdict",{"type":182},"danger","Niente",[115,185,186],{},"Versiona il tuo codice, e i tuoi dati vivono in un altro servizio.",[97,188,189,192,196],{},[115,190,191],{},"Richiedere allo stesso agente",[115,193,194],{},[180,195,183],{"type":182},[115,197,198],{},"Non ha mai avuto una copia delle tue righe.",[10,200,201,202,206],{},"Ogni strada che restituisce qualcosa ha lo stesso requisito, ed è quello che\nchiude la questione: doveva esistere prima della cancellazione. Nessuna si\naccende adesso e arriva all'indietro.\n",[78,203,205],{"href":204},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Il piano Supabase che hai decide le prime due",",\ne controllarlo richiede circa due minuti.",[20,208,210],{"id":209},"cosa-torna-e-cosa-cade-nel-divario","Cosa torna, e cosa cade nel divario",[10,212,213],{},"La copia, com'era, e niente di quello che è successo dopo.",[10,215,216],{},"Le righe create fra quella copia e la cancellazione non sono danneggiate e non\nsi nascondono in qualche angolo scomodo. Non sono mai state scritte da nessuna\nparte se non nel database da cui sono state tolte. È la parte difficile da\naccettare davanti a una tabella vuota, perché di solito perdere qualcosa vuol\ndire che quel qualcosa è ancora da qualche parte.",[218,219],"diagram",{"alt":220,"caption":221,"src":222},"Una linea del tempo da sinistra a destra. Sopra ci sono tre copie con un segno di spunta, e le righe che ognuna contiene sono disegnate più in alto come piccoli punti pieni. Dopo l'ultima copia altri punti si accumulano, poi una croce rossa segna la cancellazione. I punti fra l'ultima copia e la croce stanno in una fascia ombreggiata e sono barrati uno per uno.","Un ripristino ti riporta all'ultima copia. Le righe nella fascia ombreggiata non sono mai state scritte da nessun'altra parte, quindi niente le riporta indietro.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fthe-gap-1600x460.png",[10,224,225],{},"Quanto è larga quella fascia dipende interamente da cosa stava facendo le copie.\nUn backup notturno può metterci dentro un'intera giornata di lavoro. Il\nripristino a un momento preciso la stringe a un minuto, ed è quasi tutto il\nmotivo per cui costa a parte. Un dump che hai lanciato il giorno in cui ci hai\npensato ci mette dentro tutto il tempo passato da allora.",[10,227,228],{},"Esiste una versione di questa storia in cui il divario pesa appena, su un'app i\ncui dati sono soprattutto contenuti tuoi e cambiano lentamente. E ne esiste una\nin cui pesa moltissimo: qualsiasi cosa con ordini, messaggi o registrazioni,\ndove una giornata di righe è una giornata di persone che se ne accorgeranno.",[20,230,232],{"id":231},"lagente-ne-ha-cancellato-una-parte-non-tutto","L'agente ne ha cancellato una parte, non tutto",[10,234,235],{},"Allora hai una scelta vera da fare, e nessuna delle due risposte è pulita.",[10,237,238],{},"Un ripristino non rimette le righe mancanti lasciando in pace il resto.\nSostituisce le tabelle della copia con quello che quelle tabelle avevano allora,\nper intero. Ripristinare riporta quello che l'agente ha tolto e annulla ogni\nriga buona scritta da allora. Non ripristinare tiene le righe buone e lascia il\nbuco.",[10,240,241],{},"Quale sia giusta dipende da quanto lavoro autentico sta dopo la copia. Se la\nrisposta è quasi niente, ripristina e vai avanti con la tua giornata. Se la\nrisposta è tre giorni di schede clienti, di solito vince la strada lenta:\nesportare prima le righe sopravvissute, ripristinare, poi rimettere sopra le\nrighe esportate. È noioso, ed è l'unico percorso che non perde niente.",[10,243,244],{},"È anche l'argomento per copiare il database nel suo stato rotto attuale prima di\ntoccare qualsiasi cosa. Comunque tu decida, vuoi poter tornare allo stato da cui\nsei partito.",[218,246],{"alt":247,"caption":248,"src":249},"Tre forme di database in fila. La prima è lo stato attuale, barrato, con una freccia che sale verso una sua copia con il segno di spunta, messa da parte. La seconda è il punto di ripristino scelto che viene rigiocato. Una freccia torna dalla copia messa da parte fino al risultato, e mostra che anche il ripristino può essere annullato.","Copia lo stato rotto prima di sostituirlo. È la differenza fra una decisione su cui puoi cambiare idea e una su cui non puoi.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fsafety-copy-first-1600x520.png",[20,251,253],{"id":252},"come-va-la-stessa-ora-quando-una-copia-esiste-già","Come va la stessa ora quando una copia esiste già",[10,255,256],{},"Più corta, e più una decisione che una ricerca. Scegli una copia, guardi cosa\nconteneva e premi il pulsante.",[10,258,259],{},"È quello che fa Reeve Care: copie verificate del tuo database Supabase secondo\nun calendario, cifrate e tenute fuori dal tuo account Supabase, con dietro un\nripristino in un clic. Prima che un ripristino parta, prende una copia fresca\ndello stato attuale, così anche il ripristino si può annullare.",[10,261,262],{},"I limiti stanno nella stessa frase, perché conoscerli è il modo di decidere se\nti serve:",[264,265,266,270,273,276,279],"ul",{},[267,268,269],"li",{},"Copia il tuo database, e i file che i tuoi utenti hanno caricato appena colleghi i tuoi bucket Storage. È facoltativo e richiede una seconda chiave.",[267,271,272],{},"Oggi funziona con Supabase e con nient'altro.",[267,274,275],{},"Ripristini a una copia che esiste, non a un minuto qualsiasi che nomini tu. Nel caso peggiore perdi un intervallo, cioè fino a una notte sul piano di ingresso e meno sui due sopra.",[267,277,278],{},"Gli account di accesso non vengono mai toccati. Nessuno viene disconnesso, cancellato o riportato indietro.",[267,280,281],{},"La chiave del database che conserva sa solo leggere, ed era la promessa quando l'hai collegata. Riscrivere dati richiede una che sappia scrivere, quindi un ripristino chiede la password del tuo database ogni volta e non ne tiene nessuna. La chiave facoltativa per i tuoi file sa scrivere, perché Supabase non ne emette una in sola lettura per Storage, e la pagina dove la consegni lo dice prima.",[10,283,284,288,289,291,292,296],{},[78,285,287],{"href":286},"\u002F#pricing","Cosa copre ogni piano"," sta sulla home page. Se preferisci non pagare\nper niente di tutto questo, la versione semplice della stessa protezione è un\n",[31,290,153],{}," con un calendario che rispetti davvero, tenuto in un posto che perdere\nil tuo account Supabase non si porterebbe via.\n",[78,293,295],{"href":294},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Le tre strade e cosa sfugge a ciascuna","\nle passa in rassegna senza discorso di vendita.",[10,298,299,300,82],{},"Quell'ora è illustrata, copia dopo copia, nella ",[78,301,303],{"href":302},"\u002Fsupabase-backups","pagina dei backup\nSupabase",[20,305,307],{"id":306},"cosa-fare-adesso","Cosa fare adesso",[309,310,311],"key-takeaways",{},[264,312,313,316,319,322,325],{},[267,314,315],{},"Ferma tutto ciò che scrive nel database. È l'unico passaggio qui che costa di più quanto più lo lasci lì.",[267,317,318],{},"Stabilisci quali copie esistono prima di decidere qualsiasi cosa: prima il tuo piano Supabase, poi qualsiasi dump che ti sei preso da solo, poi se la tua app tiene traccia delle righe cancellate.",[267,320,321],{},"Copia il database com'è adesso, rotto e tutto. Qualsiasi cosa tu faccia dopo, vuoi una strada per tornare qui.",[267,323,324],{},"Dopo un ripristino, controlla che l'app possa ancora scrivere. Un database che legge bene e rifiuta un insert è un ripristino a metà, e solo un insert lo dimostra.",[267,326,327],{},"Quando l'urgenza è passata, metti su la copia che avrebbe reso tutto questo un problema da dieci minuti invece che da una mattinata.",[10,329,330,331,335],{},"Prima di chiudere questa scheda, apri il tuo progetto Supabase e scopri se\nqualcosa sta copiando il tuo database, poi annota dove vive quella copia. La\n",[78,332,334],{"href":333},"\u002Fchecklist","checklist di sicurezza in 10 minuti"," lo copre insieme al resto di\nquello che vale la pena confermare su un'app appena lanciata.",{"title":337,"searchDepth":338,"depth":338,"links":339},"",3,[340,342,343,344,345,346,347,348],{"id":22,"depth":341,"text":23},2,{"id":44,"depth":341,"text":45},{"id":63,"depth":341,"text":64},{"id":85,"depth":341,"text":86},{"id":209,"depth":341,"text":210},{"id":231,"depth":341,"text":232},{"id":252,"depth":341,"text":253},{"id":306,"depth":341,"text":307},"Backups",null,"Un agente IA ha cancellato dati dal tuo database. Quello che puoi recuperare era già deciso prima che partisse, e i prossimi minuti decidono il resto.",false,"md",[355,358,361,364,367],{"q":356,"a":357},"Un agente IA ha cancellato righe nel mio database Supabase. Posso riaverle?","Solo da una copia fatta prima che partisse, quindi la prima cosa da stabilire è se ne esiste una. Guarda cosa include il tuo piano Supabase, poi cerca qualsiasi dump che ti sei preso da solo, poi controlla se la tua app per caso tiene traccia delle righe cancellate. Se non esiste niente di tutto questo, le righe sono perse, e nessun lavoro sull'app cambierà la cosa. Stabiliscilo prima di scrivere qualunque cosa di nuovo nel database.",{"q":359,"a":360},"Posso chiedere all'agente di rimettere i dati?","No. L'agente non ha mai avuto le tue righe. Ha mandato un'istruzione al tuo database e il database l'ha eseguita, quindi quello che ha adesso è la trascrizione della conversazione e non una copia della tabella. Chiedergli di annullare la cancellazione ti dà una risposta sicura di sé e nessun dato. E significa una seconda sessione senza sorveglianza contro un database che ha già perso qualcosa.",{"q":362,"a":363},"Sono sul piano gratuito di Supabase. C'è qualcosa da recuperare?","Da Supabase no. I backup automatici partono con i piani a pagamento, e il ripristino a un momento preciso è un extra ancora sopra, quindi un progetto gratuito non ha una copia di ieri da nessuna parte. Restano un dump che ti sei preso da solo, oppure una tabella di cancellazione morbida o di audit che la tua app già scriveva. Controlla entrambe prima di dare tutto per perso, e controllale prima di continuare a usare l'app.",{"q":365,"a":366},"Devo lasciare l'app accesa mentre decido cosa fare?","Spegni tutto ciò che scrive. Leggere non è un problema. Le righe nuove sono un problema due volte: ripristinare una copia toglie tutto quello aggiunto dopo, quindi un ordine che arriva adesso è un dato che cancellerai tu stesso più avanti, e un ritorno a un momento preciso ha tanto più lavoro vero da buttare quanto più aspetti. Un avviso di manutenzione per un'ora costa meno della seconda perdita.",{"q":368,"a":369},"L'agente ha cancellato alcune righe ma non tutte. Ripristino lo stesso tutto?","Questo è il caso scomodo, e una risposta pulita non c'è. Un ripristino sostituisce per intero le tabelle della copia, quindi riporta quello che hai perso e allo stesso tempo annulla ogni riga buona scritta da allora. Quale strada prendere dipende da quanto lavoro vero sta dopo la copia. Se è tanto, esportare prima le righe sopravvissute e rimetterle sopra al ripristino è più lento e non perde niente.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",[372,373,374,375,376],"ia ha cancellato i dati del mio database recuperare","agente ia ha cancellato i miei dati","cursor ha cancellato il mio database","agente ia ha cancellato una tabella","recuperare dati dopo cancellazione da ia",{},true,"Un agente IA ha cancellato i miei dati Supabase","\u002Fblog\u002Fai-agent-deleted-my-database","2026-08-21",{"title":5,"description":351},"blog\u002Fai-agent-deleted-my-database",[385,386,387],"Se un agente IA ha cancellato dati dal tuo database, quello che puoi recuperare è ciò che stava nell'ultima copia fatta prima. Quello nato dopo non è stato scritto da nessun'altra parte.","Ferma tutto ciò che scrive righe nuove prima di qualsiasi altra cosa. Un ripristino toglie tutto quello aggiunto dopo la copia, quindi una registrazione che arriva adesso è una riga che cancellerai tu stesso.","L'agente non può rimettere le righe. Non le ha mai avute, e rilanciarlo contro un database in produzione è un'altra occasione per perdere altro.","0SaEeZJLnuth0bfzGrkw5hOhqjTg4k_t6ODG8MXuR2g",1787826051012]