[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"blog-es-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_es\u002Fblog\u002Fai-agent-deleted-my-database.md","Un agente de IA borró mis datos de Supabase. ¿Qué puedo recuperar?",{"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",{},"Le pediste al agente que limpiara unas filas de prueba, o que arreglara una\nmigración que no acababa de aplicarse. Escribió el SQL él mismo, lo ejecutó\ncontra el proyecto que usa tu app en producción y te dijo que estaba hecho. La\napp sigue cargando. La tabla está vacía.",[10,14,15],{},"Cuando un agente de IA ha borrado datos de tu base, lo que puedes recuperar ya\nestaba decidido antes de que se ejecutara. Los próximos minutos deciden cuánto\nde eso sobrevive.",[10,17,18],{},"Aquí está lo que fallan casi todas las respuestas a esto. Te dicen que vuelvas\natrás en el código, o que le pidas al agente que lo deshaga. Ninguna de las dos\ntoca tus datos, y mientras lo intentas, lo único que todavía está en tu mano se\nva poniendo peor en silencio: lo que tu app está escribiendo en la base ahora\nmismo.",[20,21,23],"h2",{"id":22},"qué-puedo-recuperar-después-de-que-una-ia-borrara-mis-datos","¿Qué puedo recuperar después de que una IA borrara mis datos?",[10,25,26],{},"Lo que hubiera en la última copia de tu base tomada antes del borrado, y nada de\nlo que se creara después.",[10,28,29,30,34,35,38],{},"Esa es toda la respuesta, y la mayor parte se decidió hace semanas. Aquí no hay\nun paso forense, nada que desborrar, ningún registro esperando en Supabase para\nvolver a reproducirse. Una fila que se llevó un ",[31,32,33],"code",{},"DELETE"," o un ",[31,36,37],{},"DROP TABLE","\ndesapareció de la base en el momento en que la instrucción se confirmó. Lo que\nvuelve es una copia, y una copia existe o no existe.",[10,40,41],{},"Así que tienes dos tareas delante. Averiguar qué copias existen. Y evitar que el\nhueco entre la más reciente y ahora salga más caro de lo que ya sale.",[20,43,45],{"id":44},"lo-primero-para-todo-lo-que-escriba-en-la-base","Lo primero: para todo lo que escriba en la base",[10,47,48],{},"Antes de ponerte a buscar una copia de seguridad, apaga todo lo que escriba\nfilas nuevas. Leer no es problema.",[10,50,51],{},"Hay dos razones, y la segunda pilla a la gente.",[10,53,54],{},"La primera es que una restauración no es una fusión. Volver a poner una copia\nsustituye las tablas que contiene por lo que aquellas tablas tenían entonces, y\ntodo lo escrito después se va con ellas. Un cliente que se registre durante la\nhora que pases leyendo esto es una fila que borrarás tú mismo, más tarde, en un\npaso que ya has decidido dar.",[10,56,57],{},"La segunda es que algunas vías empeoran mientras esperas. La recuperación a un\nmomento concreto de Supabase devuelve el proyecto entero a un minuto que tú\neliges, así que cuanto más se aleje la app del error, más trabajo auténtico tira\nesa vuelta atrás junto con el daño.",[10,59,60],{},"Una hora detrás de un aviso de mantenimiento sale barata. Explicarle a alguien\nque su pedido se creó y luego se quitó a propósito sale mucho más caro.",[20,62,64],{"id":63},"puedo-pedirle-al-agente-que-lo-deshaga","¿Puedo pedirle al agente que lo deshaga?",[10,66,67],{},"No. Nunca tuvo tus filas.",[10,69,70],{},"El agente escribió una instrucción y tu base la ejecutó. Lo que tiene ahora es\nla transcripción de esa conversación, que es algo distinto de una copia de la\ntabla. Pídele que deshaga el borrado y obtendrás una respuesta segura de sí\nmisma, SQL plausible y ningún dato.",[10,72,73],{},"Vale la pena ser concreto con el riesgo, porque la petición parece inofensiva.\nVolver a ejecutar el agente significa una segunda sesión sin supervisión contra\nuna base en producción que ya ha perdido algo. Si decide que la forma de\narreglar una tabla que falta es crear una, ahora tienes una tabla nueva y vacía\ndonde estaba la antigua, y has hecho la pérdida más difícil de describirle a\nquien te ayude después.",[10,75,76,77,82],{},"Sácalo del proyecto hasta que sepas dónde estás. Lo mismo vale para el historial\nde versiones de tu builder: volver con el código a esta mañana restaura tus\npáginas y deja tus datos exactamente donde están, por\n",[78,79,81],"a",{"href":80},"\u002Fblog\u002Fversion-history-is-not-a-backup","razones que conviene entender una vez",".",[20,84,86],{"id":85},"dónde-mirar-y-en-qué-orden","Dónde mirar, y en qué orden",[10,88,89],{},"Baja por esta lista y párate en la primera que exista. Está ordenada por cuántos\nde tus datos vuelven, que no es lo mismo que por lo fácil que sea.",[91,92,93,109],"table",{},[94,95,96],"thead",{},[97,98,99,103,106],"tr",{},[100,101,102],"th",{},"Dónde mirar",[100,104,105],{},"Qué puede devolver",[100,107,108],{},"Qué tenía que ser cierto ya",[110,111,112,124,135,146,161,172,187],"tbody",{},[97,113,114,118,121],{},[115,116,117],"td",{},"Recuperación de Supabase a un momento concreto",[115,119,120],{},"La base tal como estaba en un minuto que tú eliges, incluido el anterior al borrado",[115,122,123],{},"Un plan de pago con la opción PITR, contratada antes de hoy",[97,125,126,129,132],{},[115,127,128],{},"Copia diaria de Supabase",[115,130,131],{},"La base tal como estaba en la última copia automática",[115,133,134],{},"Un plan de pago",[97,136,137,140,143],{},[115,138,139],{},"Un servicio de copias gestionado",[115,141,142],{},"La base tal como estaba en la última copia comprobada de ese servicio",[115,144,145],{},"Conectaste uno antes de hoy",[97,147,148,155,158],{},[115,149,150,151,154],{},"Un ",[31,152,153],{},"pg_dump"," que hiciste tú",[115,156,157],{},"Todo lo que haya en el archivo, tan viejo como la última vez que te acordaste",[115,159,160],{},"El archivo existe y terminó de escribirse",[97,162,163,166,169],{},[115,164,165],{},"Una tabla de borrado suave o auditoría en tu app",[115,167,168],{},"Solo las filas de las que tu app ya llevaba registro",[115,170,171],{},"La construiste así a propósito",[97,173,174,177,184],{},[115,175,176],{},"El historial de versiones de tu builder",[115,178,179],{},[180,181,183],"key-verdict",{"type":182},"danger","Nada",[115,185,186],{},"Versiona tu código, y tus datos viven en otro servicio.",[97,188,189,192,196],{},[115,190,191],{},"Volver a preguntarle al agente",[115,193,194],{},[180,195,183],{"type":182},[115,197,198],{},"Nunca ha tenido una copia de tus filas.",[10,200,201,202,206],{},"Todas las vías que devuelven algo comparten el mismo requisito, y es el que\nzanja esto: tenía que existir antes del borrado. Ninguna se enciende ahora y\nalcanza hacia atrás.\n",[78,203,205],{"href":204},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","El plan de Supabase que tengas decide las dos primeras",",\ny comprobarlo lleva unos dos minutos.",[20,208,210],{"id":209},"qué-vuelve-y-qué-cae-en-el-hueco","Qué vuelve y qué cae en el hueco",[10,212,213],{},"La copia, tal como estaba, y nada de lo que pasó después.",[10,215,216],{},"Las filas creadas entre esa copia y el borrado no están dañadas ni escondidas en\nalgún rincón incómodo. Nunca quedaron escritas en ningún sitio salvo en la base\nde la que se han quitado. Esa es la parte difícil de aceptar delante de una\ntabla vacía, porque perder algo suele querer decir que ese algo sigue estando en\nalguna parte.",[218,219],"diagram",{"alt":220,"caption":221,"src":222},"Una línea de tiempo de izquierda a derecha. Sobre ella hay tres copias marcadas con un visto, y las filas que guarda cada una están dibujadas encima como puntos pequeños rellenos. Después de la última copia se acumulan más puntos, y luego una cruz roja marca el borrado. Los puntos entre la última copia y la cruz quedan en una banda sombreada y están tachados uno a uno.","Una restauración te devuelve a la última copia. Las filas de la banda sombreada no quedaron escritas en ningún otro sitio, así que nada las trae de vuelta.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fthe-gap-1600x460.png",[10,224,225],{},"Lo ancha que sea esa banda depende por completo de qué estuviera tomando las\ncopias. Una copia nocturna puede meter dentro un día de trabajo entero. La\nrecuperación a un momento concreto la estrecha a un minuto, y ese es casi todo\nel motivo de que cueste aparte. Un dump que hiciste el día que te acordaste mete\ndentro todo el tiempo transcurrido desde entonces.",[10,227,228],{},"Hay una versión de esto en la que el hueco casi no importa, en una app cuyos\ndatos son sobre todo contenido tuyo y cambian despacio. Y hay una versión en la\nque importa mucho: cualquier cosa con pedidos, mensajes o registros, donde un\ndía de filas es un día de personas que se van a dar cuenta.",[20,230,232],{"id":231},"el-agente-borró-una-parte-no-todo","El agente borró una parte, no todo",[10,234,235],{},"Entonces tienes una decisión de verdad, y ninguna de las dos respuestas es\nlimpia.",[10,237,238],{},"Una restauración no devuelve las filas que faltan dejando el resto en paz.\nSustituye las tablas de la copia por lo que aquellas tablas tenían entonces, por\ncompleto. Restaurar recupera lo que el agente quitó y revierte cada fila buena\nescrita desde entonces. No restaurar conserva las filas buenas y deja el agujero.",[10,240,241],{},"Cuál es la correcta depende de cuánto trabajo auténtico haya después de la\ncopia. Si la respuesta es casi ninguno, restaura y sigue con tu día. Si la\nrespuesta es tres días de fichas de clientes, suele ganar la vía lenta: exportar\nprimero las filas supervivientes, restaurar, y luego volver a poner encima las\nfilas exportadas. Es engorroso, y es el único camino que no pierde nada.",[10,243,244],{},"Es también el argumento para copiar la base en su estado roto actual antes de\ntocar nada. Decidas lo que decidas, quieres poder volver al estado del que\npartiste.",[218,246],{"alt":247,"caption":248,"src":249},"Tres formas de base de datos en fila. La primera es el estado actual, tachado, con una flecha que sube hacia una copia suya marcada con un visto y apartada. La segunda es el punto de restauración elegido, que se está reproduciendo. Una flecha vuelve desde la copia apartada hasta el resultado, mostrando que la propia restauración se puede deshacer.","Copia el estado roto antes de sustituirlo. Es la diferencia entre una decisión sobre la que puedes cambiar de opinión y una que no.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fsafety-copy-first-1600x520.png",[20,251,253],{"id":252},"cómo-va-esa-misma-hora-cuando-ya-existe-una-copia","Cómo va esa misma hora cuando ya existe una copia",[10,255,256],{},"Más corta, y más una decisión que una búsqueda. Eliges una copia, miras qué\nguardaba y pulsas el botón.",[10,258,259],{},"Eso es lo que hace Reeve Care: copias comprobadas de tu base de Supabase según\nun calendario, cifradas y guardadas fuera de tu cuenta de Supabase, con una\nrestauración en un clic detrás. Antes de que una restauración arranque, toma una\ncopia fresca del estado actual, para que la propia restauración se pueda\ndeshacer.",[10,261,262],{},"Los límites van en la misma frase, porque conocerlos es la forma de decidir si\nte encaja:",[264,265,266,270,273,276,279],"ul",{},[267,268,269],"li",{},"Copia tu base de datos, y los archivos que subieron tus usuarios en cuanto conectas tus buckets de Storage. Es opcional y requiere una segunda clave.",[267,271,272],{},"Hoy funciona con Supabase y con nada más.",[267,274,275],{},"Restauras a una copia que existe, no a cualquier minuto que nombres. En el peor caso pierdes un intervalo, o sea hasta una noche en el plan de entrada y menos en los dos de encima.",[267,277,278],{},"Las cuentas de acceso no se tocan nunca. A nadie se le cierra la sesión, se le borra ni se le devuelve.",[267,280,281],{},"La clave de base de datos que guarda solo sabe leer, y esa fue la promesa cuando la conectaste. Volver a escribir datos necesita una que sepa escribir, así que una restauración te pide la contraseña de la base cada vez y no se queda con ninguna. La clave opcional para tus archivos sí sabe escribir, porque Supabase no emite ninguna de solo lectura para Storage, y la página donde la entregas lo dice antes.",[10,283,284,288,289,291,292,296],{},[78,285,287],{"href":286},"\u002F#pricing","Qué cubre cada plan"," está en la página de inicio. Si prefieres no\npagar por nada de esto, la versión sencilla de la misma protección es un\n",[31,290,153],{}," con un calendario que cumplas de verdad, guardado en algún sitio que\nperder tu cuenta de Supabase no se llevaría por delante.\n",[78,293,295],{"href":294},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Las tres vías y lo que se le escapa a cada una","\nlo repasa sin discurso de venta.",[10,298,299,300,82],{},"Esa hora está explicada, copia por copia, en la ",[78,301,303],{"href":302},"\u002Fsupabase-backups","página de copias de\nSupabase",[20,305,307],{"id":306},"qué-hacer-ahora-mismo","Qué hacer ahora mismo",[309,310,311],"key-takeaways",{},[264,312,313,316,319,322,325],{},[267,314,315],{},"Para todo lo que escriba en la base. Es el único paso de aquí que sale más caro cuanto más lo dejes.",[267,317,318],{},"Averigua qué copias existen antes de decidir nada: primero tu plan de Supabase, luego cualquier dump que hicieras tú, y luego si tu app lleva registro de las filas borradas.",[267,320,321],{},"Copia la base tal como está ahora, rota y todo. Hagas lo que hagas después, quieres un camino de vuelta hasta aquí.",[267,323,324],{},"Después de una restauración, comprueba que la app todavía puede escribir. Una base que lee bien y rechaza un insert es una restauración a medias, y solo un insert lo demuestra.",[267,326,327],{},"Cuando pase lo urgente, monta la copia que habría convertido todo esto en un problema de diez minutos en lugar de una mañana.",[10,329,330,331,335],{},"Antes de cerrar esta pestaña, abre tu proyecto de Supabase y averigua si algo\nestá copiando tu base, y apunta dónde vive esa copia. La\n",[78,332,334],{"href":333},"\u002Fchecklist","checklist de seguridad en 10 minutos"," lo cubre junto con lo demás\nque conviene confirmar en una app recién lanzada.",{"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 de IA borró datos de tu base. Lo que puedes recuperar ya estaba decidido antes de que se ejecutara, y los próximos minutos deciden el resto.",false,"md",[355,358,361,364,367],{"q":356,"a":357},"Un agente de IA borró filas de mi base de Supabase. ¿Puedo recuperarlas?","Solo desde una copia tomada antes de que se ejecutara, así que lo primero es averiguar si existe alguna. Mira qué incluye tu plan de Supabase, luego busca cualquier dump que hayas hecho tú, y luego comprueba si tu app guarda por casualidad un registro de las filas borradas. Si no existe nada de eso, las filas se han perdido, y ningún trabajo sobre la app va a cambiarlo. Averigua esto antes de escribir nada nuevo en la base.",{"q":359,"a":360},"¿Puedo pedirle al agente que devuelva los datos?","No. El agente nunca tuvo tus filas. Envió una instrucción a tu base y la base la ejecutó, así que lo que tiene ahora es la transcripción de la conversación, no una copia de la tabla. Pedirle que deshaga el borrado te da una respuesta segura de sí misma y ningún dato. Además supone una segunda sesión sin supervisión contra una base que ya ha perdido algo.",{"q":362,"a":363},"Estoy en el plan gratuito de Supabase. ¿Hay algo que recuperar?","De Supabase no. Las copias automáticas empiezan en los planes de pago, y la recuperación a un momento concreto es un añadido por encima, así que un proyecto gratuito no tiene una copia de ayer en ninguna parte. Queda un dump que hayas hecho tú, o una tabla de borrado suave o de auditoría que tu app ya estuviera escribiendo. Comprueba las dos antes de dar nada por perdido, y compruébalas antes de seguir usando la app.",{"q":365,"a":366},"¿Debo dejar la app funcionando mientras decido qué hacer?","Apaga todo lo que escriba. Leer no es problema. Las filas nuevas son un problema doble: restaurar una copia quita todo lo añadido después, así que un pedido que entre ahora es un dato que borrarás tú mismo más tarde, y una vuelta atrás a un momento concreto tiene más trabajo real que tirar cuanto más esperes. Un aviso de mantenimiento durante una hora cuesta menos que la segunda pérdida.",{"q":368,"a":369},"El agente borró algunas filas pero no todas. ¿Restauro igualmente todo?","Ese es el caso incómodo, y no hay una respuesta limpia. Una restauración sustituye por completo las tablas de la copia, así que devuelve lo que perdiste y a la vez revierte cada fila buena escrita desde entonces. Cuál elegir depende de cuánto trabajo real haya después de la copia. Si es mucho, exportar primero las filas supervivientes y volver a ponerlas encima de la restauración es más lento y no pierde nada.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",[372,373,374,375,376],"una ia borró los datos de mi base recuperar","agente de ia borró mis datos","cursor borró mi base de datos","agente de ia borró una tabla","recuperar datos tras borrado de una ia",{},true,"Un agente de IA borró mis datos de Supabase","\u002Fblog\u002Fai-agent-deleted-my-database","2026-08-21",{"title":5,"description":351},"blog\u002Fai-agent-deleted-my-database",[385,386,387],"Si un agente de IA borró datos de tu base, lo que puedes recuperar es lo que hubiera en la última copia tomada antes. Lo creado después no quedó escrito en ningún otro sitio.","Corta todo lo que escriba filas nuevas antes que cualquier otra cosa. Una restauración quita todo lo añadido después de la copia, así que un registro que entre ahora es una fila que borrarás tú mismo.","El agente no puede devolver las filas. Nunca las tuvo, y volver a ejecutarlo contra una base en producción es otra ocasión de perder más.","sIeciiZooNg6LE2Nhv5kNRh8wJ6VAGfRNG1yS3FNy-Q",1787826048206]