[{"data":1,"prerenderedAt":388},["ShallowReactive",2],{"blog-uk-ai-agent-deleted-my-database":3},{"id":4,"title":5,"body":6,"category":348,"cover":349,"coverAlt":349,"description":350,"draft":351,"extension":352,"faq":353,"image":369,"keywords":370,"meta":376,"navigation":377,"ogTitle":378,"path":379,"published":380,"seo":381,"stem":382,"tldr":383,"updated":380,"__hash__":387},"blog_uk\u002Fblog\u002Fai-agent-deleted-my-database.md","ШІ-агент видалив мої дані в Supabase. Що можна відновити?",{"type":7,"value":8,"toc":335},"minimark",[9,13,16,19,24,27,39,42,46,49,52,55,58,61,65,68,71,74,83,87,90,198,206,210,213,216,222,225,228,232,235,238,241,244,249,253,256,259,262,281,296,303,307,327],[10,11,12],"p",{},"Ви попросили агента прибрати кілька тестових рядків або полагодити міграцію,\nяка не хотіла застосуватися. Він сам написав SQL, запустив його проти проєкту,\nяким користується ваш живий застосунок, і повідомив, що готово. Застосунок і\nдалі завантажується. Таблиця порожня.",[10,14,15],{},"Коли ШІ-агент видалив дані з вашої бази, те, що ви зможете відновити,\nвирішилося ще до його запуску. Наступні хвилини вирішують, скільки з цього\nвціліє.",[10,17,18],{},"Ось те місце, яке промахують майже всі відповіді на це питання. Вам радять\nвідкотити код або попросити агента скасувати зроблене. Жодне з двох не\nторкається ваших даних, а поки ви пробуєте, єдине, що ще у ваших руках, тихо\nгіршає: те, що ваш застосунок просто зараз пише в базу.",[20,21,23],"h2",{"id":22},"що-можна-відновити-після-того-як-ші-видалив-мої-дані","Що можна відновити після того, як ШІ видалив мої дані?",[10,25,26],{},"Те, що було в останній копії вашої бази, знятій до видалення, і нічого з того,\nщо з'явилося після неї.",[10,28,29,30,34,35,38],{},"Це вся відповідь, і більша її частина вирішилася кілька тижнів тому. Тут немає\nжодного експертного кроку, немає чого розвидаляти, немає журналу, який чекав би\nв Supabase, щоб його програли заново. Рядок, який прибрав ",[31,32,33],"code",{},"DELETE"," або\n",[31,36,37],{},"DROP TABLE",", зник із бази тієї миті, коли інструкція підтвердилася. Назад\nповертається копія, а копія або існує, або ні.",[10,40,41],{},"Тож перед вами два завдання. З'ясувати, які копії існують. І не дати проміжку\nміж найновішою з них і теперішнім моментом стати ще дорожчим, ніж він уже є.",[20,43,45],{"id":44},"найперше-зупиніть-усе-що-пише-в-базу","Найперше: зупиніть усе, що пише в базу",[10,47,48],{},"Перш ніж шукати резервну копію, вимкніть усе, що пише нові рядки. Читання не\nзаважає.",[10,50,51],{},"Причин дві, і друга людей заскочує.",[10,53,54],{},"Перша: відновлення не є злиттям. Повернути копію означає замінити таблиці, які\nв ній є, тим, що вони містили тоді, і все написане після неї піде разом з ними.\nКлієнт, який зареєструється за ту годину, поки ви це читаєте, стане рядком,\nякий ви видалите власноруч, згодом, кроком, на який ви вже зважилися.",[10,56,57],{},"Друга: деякі шляхи гіршають, поки ви чекаєте. Відновлення на момент часу в\nSupabase повертає весь проєкт на обрану вами хвилину, тож що далі застосунок\nвідходить від помилки, то більше справжньої роботи це повернення викидає разом\nзі шкодою.",[10,59,60],{},"Година за оголошенням про технічні роботи коштує дешево. Пояснювати комусь, що\nйого замовлення створили, а потім навмисно прибрали, коштує значно дорожче.",[20,62,64],{"id":63},"чи-можна-попросити-агента-скасувати-це","Чи можна попросити агента скасувати це?",[10,66,67],{},"Ні. Він ніколи не тримав ваших рядків.",[10,69,70],{},"Агент написав інструкцію, а ваша база її виконала. Те, що він має тепер,\nзалишається стенограмою тієї розмови, а стенограма відрізняється від копії\nтаблиці. Попросіть його скасувати видалення, і ви отримаєте впевнену відповідь,\nправдоподібний SQL і жодних даних.",[10,72,73],{},"Про ризик варто сказати точно, бо прохання здається безневинним. Запустити\nагента ще раз означає другий безнаглядний сеанс проти живої бази, яка вже щось\nвтратила. Якщо він вирішить, що зниклу таблицю найкраще полагодити, створивши\nнову, тепер на місці старої стоятиме нова порожня таблиця, а ви ускладнили опис\nвтрати для того, хто допомагатиме вам наступним.",[10,75,76,77,82],{},"Заберіть його з проєкту, доки не зрозумієте, де ви стоїте. Те саме стосується\nісторії версій вашого білдера: відкотити код до сьогоднішнього ранку означає\nвідновити сторінки й лишити дані рівно там, де вони зараз, з\n",[78,79,81],"a",{"href":80},"\u002Fblog\u002Fversion-history-is-not-a-backup","причин, які варто зрозуміти один раз",".",[20,84,86],{"id":85},"де-шукати-у-такому-порядку","Де шукати, у такому порядку",[10,88,89],{},"Ідіть цим списком і спиніться на першому пункті, який у вас є. Він упорядкований\nза тим, скільки ваших даних повертається, а не за тим, наскільки це легко.",[91,92,93,109],"table",{},[94,95,96],"thead",{},[97,98,99,103,106],"tr",{},[100,101,102],"th",{},"Де шукати",[100,104,105],{},"Що може повернути",[100,107,108],{},"Що вже мало бути правдою",[110,111,112,124,135,146,160,171,186],"tbody",{},[97,113,114,118,121],{},[115,116,117],"td",{},"Відновлення Supabase на момент часу",[115,119,120],{},"База такою, якою вона була в обрану вами хвилину, зокрема ту, що перед видаленням",[115,122,123],{},"Платний тариф із докупленою опцією PITR, оформленою до сьогодні",[97,125,126,129,132],{},[115,127,128],{},"Щоденна копія Supabase",[115,130,131],{},"База такою, якою вона була на останній автоматичній копії",[115,133,134],{},"Платний тариф",[97,136,137,140,143],{},[115,138,139],{},"Керована служба резервних копій",[115,141,142],{},"База такою, якою вона була на останній перевіреній копії тієї служби",[115,144,145],{},"Ви під'єднали таку до сьогодні",[97,147,148,154,157],{},[115,149,150,153],{},[31,151,152],{},"pg_dump",", який ви зробили самі",[115,155,156],{},"Усе, що є у файлі, а він такий старий, як ваш останній спогад про нього",[115,158,159],{},"Файл існує й дописався до кінця",[97,161,162,165,168],{},[115,163,164],{},"Таблиця м'якого видалення чи аудиту у застосунку",[115,166,167],{},"Лише ті рядки, облік яких ваш застосунок і так вів",[115,169,170],{},"Ви навмисно її так побудували",[97,172,173,176,183],{},[115,174,175],{},"Історія версій вашого білдера",[115,177,178],{},[179,180,182],"key-verdict",{"type":181},"danger","Нічого",[115,184,185],{},"Вона версіонує ваш код, а ваші дані живуть в іншій службі.",[97,187,188,191,195],{},[115,189,190],{},"Спитати агента ще раз",[115,192,193],{},[179,194,182],{"type":181},[115,196,197],{},"Він ніколи не тримав копії ваших рядків.",[10,199,200,201,205],{},"Кожен шлях, який щось повертає, має ту саму вимогу, і саме вона вирішує справу:\nвін мав існувати до видалення. Жоден із них не вмикається зараз і не дотягується\nназад.\n",[78,202,204],{"href":203},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Ваш тариф Supabase вирішує щодо перших двох",",\nа перевірка забирає близько двох хвилин.",[20,207,209],{"id":208},"що-повертається-а-що-падає-в-проміжок","Що повертається, а що падає в проміжок",[10,211,212],{},"Копія такою, якою вона була, і нічого з того, що сталося після неї.",[10,214,215],{},"Рядки, створені між тією копією й видаленням, не пошкоджені й не ховаються десь\nу незручному кутку. Їх ніколи не записували ніде, окрім бази, з якої їх\nприбрали. Це та частина, яку важко прийняти перед порожньою таблицею, бо\nвтратити щось зазвичай означає, що воно ще десь є.",[217,218],"diagram",{"alt":219,"caption":220,"src":221},"Часова шкала зліва направо. На ній лежать три позначені галочкою копії, а рядки, які тримає кожна з них, намальовані вище дрібними зафарбованими крапками. Після останньої копії крапок додається більше, а тоді червоний хрестик позначає видалення. Крапки між останньою копією та хрестиком лежать у затіненій смузі й кожна перекреслена.","Відновлення повертає вас до останньої копії. Рядки в затіненій смузі не записані більше ніде, тож їх не поверне ніщо.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fthe-gap-1600x460.png",[10,223,224],{},"Наскільки широка ця смуга, залежить тільки від того, що знімало копії. Нічна\nкопія може вмістити туди цілий робочий день. Відновлення на момент часу звужує\nсмугу до хвилини, і це майже вся причина його окремої ціни. Дамп, який ви\nзробили того дня, коли згадали про нього, вміщує туди весь час, що минув\nвідтоді.",[10,226,227],{},"Є варіант, у якому проміжок важить мало: застосунок, дані якого здебільшого ваш\nвласний вміст і змінюються повільно. І є варіант, у якому він важить дуже\nбагато: усе, де живуть замовлення, повідомлення чи реєстрації, де день рядків\nозначає день людей, які це помітять.",[20,229,231],{"id":230},"агент-видалив-частину-а-не-все","Агент видалив частину, а не все",[10,233,234],{},"Тоді перед вами справжній вибір, і жодна з двох відповідей не є чистою.",[10,236,237],{},"Відновлення не повертає зниклі рядки, лишаючи решту в спокої. Воно замінює\nтаблиці з копії тим, що ці таблиці містили тоді, повністю. Відновити означає\nповернути прибране агентом і водночас відкотити кожен добрий рядок, написаний\nвідтоді. Не відновлювати означає зберегти добрі рядки й лишити діру.",[10,239,240],{},"Що правильно, залежить від того, скільки справжньої роботи лежить після копії.\nЯкщо відповідь майже ніякої, відновлюйте й живіть далі. Якщо відповідь три дні\nклієнтських записів, зазвичай виграє повільніший шлях: спершу експортувати\nвцілілі рядки, відновити, а потім покласти експортовані рядки згори. Це\nмарудно, і це єдиний шлях, який нічого не втрачає.",[10,242,243],{},"Це також аргумент за те, щоб скопіювати базу в її нинішньому зламаному стані,\nперш ніж торкатися чогось узагалі. Хоч би що ви вирішили, ви хочете мати змогу\nповернутися до того стану, з якого почали.",[217,245],{"alt":246,"caption":247,"src":248},"Три форми бази даних поспіль. Перша це нинішній стан, перекреслений, зі стрілкою, що веде вгору до його копії, позначеної галочкою й відкладеної вбік. Друга це обрана точка відновлення, яку програють назад. Стрілка повертається від відкладеної копії до результату й показує, що саме відновлення теж можна скасувати.","Скопіюйте зламаний стан, перш ніж замінювати його. Це різниця між рішенням, яке ви можете переграти, і рішенням, якого переграти не вийде.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fsafety-copy-first-1600x520.png",[20,250,252],{"id":251},"як-минає-та-сама-година-коли-копія-вже-є","Як минає та сама година, коли копія вже є",[10,254,255],{},"Коротше, і це радше рішення, ніж пошук. Ви обираєте копію, дивитеся, що вона\nтримала, і натискаєте кнопку.",[10,257,258],{},"Саме це робить Reeve Care: перевірені копії вашої бази Supabase за розкладом,\nзашифровані й збережені поза вашим обліковим записом Supabase, а за ними\nвідновлення в один клац. Перш ніж відновлення почнеться, воно знімає свіжу\nкопію поточного стану, щоб і саме відновлення можна було скасувати.",[10,260,261],{},"Обмеження варто назвати тим самим подихом, бо знати їх означає мати змогу\nвирішити, чи це вам підходить:",[263,264,265,269,272,275,278],"ul",{},[266,267,268],"li",{},"Воно копіює вашу базу даних, а також файли, які завантажили ваші користувачі, щойно ви під’єднаєте свої бакети Storage. Це необов’язково й потребує другого ключа.",[266,270,271],{},"Сьогодні воно працює з Supabase і більше ні з чим.",[266,273,274],{},"Ви відновлюєтеся до копії, яка існує, а не до будь-якої хвилини, яку назвете. У найгіршому разі ви втрачаєте один інтервал, тобто до однієї ночі на початковому тарифі й менше на двох вищих.",[266,276,277],{},"Облікових записів для входу ніколи не торкаються. Нікого не розлогінюють, не видаляють і не повертають.",[266,279,280],{},"Ключ до бази, який зберігається, вміє тільки читати, і це була обіцянка тоді, коли ви його під'єднали. Записати дані назад потребує того, який уміє писати, тож відновлення щоразу питає пароль вашої бази й не лишає жодного. Необов’язковий ключ до ваших файлів уміє писати, бо Supabase не видає для Storage ключів лише для читання, і сторінка, де ви його передаєте, каже про це заздалегідь.",[10,282,283,287,288,290,291,295],{},[78,284,286],{"href":285},"\u002F#pricing","Що покриває кожен тариф",", написано на головній сторінці. Якщо ви\nволієте не платити за це нічого, простий варіант того самого захисту це\n",[31,289,152],{}," за розкладом, якого ви справді дотримуєтеся, збережений там, куди не\nдотягнеться втрата вашого облікового запису Supabase.\n",[78,292,294],{"href":293},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Три шляхи й те, що проминає кожен із них","\nпроходить це без продажної промови.",[10,297,298,299,82],{},"Цю саму годину показано, копія за копією, на ",[78,300,302],{"href":301},"\u002Fsupabase-backups","сторінці резервних копій\nSupabase",[20,304,306],{"id":305},"що-робити-просто-зараз","Що робити просто зараз",[308,309,310],"key-takeaways",{},[263,311,312,315,318,321,324],{},[266,313,314],{},"Зупиніть усе, що пише в базу. Це єдиний крок тут, який дорожчає, доки ви його відкладаєте.",[266,316,317],{},"З'ясуйте, які копії існують, перш ніж щось вирішувати: спершу ваш тариф Supabase, потім будь-який дамп, який ви робили самі, потім те, чи веде ваш застосунок облік видалених рядків.",[266,319,320],{},"Скопіюйте базу такою, якою вона є зараз, зламаною і всім іншим. Хоч би що ви робили далі, ви хочете мати шлях назад сюди.",[266,322,323],{},"Після відновлення перевірте, чи застосунок ще може писати. База, яка правильно читає й відмовляє в insert, є наполовину завершеним відновленням, і доводить це лише insert.",[266,325,326],{},"Коли нагальне мине, налаштуйте ту копію, яка перетворила б усе це на десятихвилинну справу замість цілого ранку.",[10,328,329,330,334],{},"Перш ніж закрити цю вкладку, відкрийте свій проєкт Supabase і дізнайтеся, чи\nхоч щось копіює вашу базу, а тоді запишіть, де ця копія лежить.\n",[78,331,333],{"href":332},"\u002Fchecklist","Десятихвилинний чеклист безпеки"," покриває це разом з рештою того,\nщо варто підтвердити у щойно запущеному застосунку.",{"title":336,"searchDepth":337,"depth":337,"links":338},"",3,[339,341,342,343,344,345,346,347],{"id":22,"depth":340,"text":23},2,{"id":44,"depth":340,"text":45},{"id":63,"depth":340,"text":64},{"id":85,"depth":340,"text":86},{"id":208,"depth":340,"text":209},{"id":230,"depth":340,"text":231},{"id":251,"depth":340,"text":252},{"id":305,"depth":340,"text":306},"Backups",null,"ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.",false,"md",[354,357,360,363,366],{"q":355,"a":356},"ШІ-агент видалив рядки в моїй базі Supabase. Чи можна їх повернути?","Лише з копії, знятої до його запуску, тож найперше варто з'ясувати, чи існує така взагалі. Подивіться, що включає ваш тариф Supabase, потім пошукайте будь-який дамп, який ви робили самі, потім перевірте, чи ваш застосунок часом не веде облік видалених рядків. Якщо нічого з цього немає, рядки втрачено, і жодна робота над застосунком цього не змінить. З'ясуйте це, перш ніж записувати в базу щось нове.",{"q":358,"a":359},"Чи можна попросити агента повернути дані?","Ні. Агент ніколи не тримав ваших рядків. Він надіслав інструкцію вашій базі, і база її виконала, тож тепер він має стенограму розмови, а не копію таблиці. Прохання скасувати видалення дасть вам упевнену відповідь і жодних даних. А ще це означає другий безнаглядний сеанс проти бази, яка вже щось втратила.",{"q":361,"a":362},"Я на безкоштовному тарифі Supabase. Чи є там що відновлювати?","Від Supabase немає. Автоматичні копії починаються на платних тарифах, а відновлення на момент часу докуповується понад це, тож у безкоштовному проєкті ніде не лежить копія вчорашнього дня. Лишається дамп, який ви робили самі, або таблиця м",{"q":364,"a":365},"Чи лишати застосунок увімкненим, поки я думаю, що робити?","Вимкніть усе, що пише. Читання не заважає. Нові рядки шкодять двічі: відновлення копії прибирає все додане після неї, тож замовлення, яке надійде зараз, стане даними, які ви згодом видалите власноруч, а повернення на момент часу має тим більше справжньої роботи на викид, чим довше ви зволікаєте. Оголошення про технічні роботи на годину коштує менше, ніж друга втрата.",{"q":367,"a":368},"Агент видалив частину рядків, але не всі. Чи відновлювати все одно все?","Це незручний випадок, і чистої відповіді тут немає. Відновлення повністю замінює таблиці з копії, тож воно повертає втрачене й водночас відкочує кожен добрий рядок, написаний відтоді. Що обрати, залежить від того, скільки справжньої роботи лежить після копії. Якщо багато, повільніший шлях нічого не втрачає: спершу експортувати вцілілі рядки, відновити, а потім покласти експортовані рядки згори.","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",[371,372,373,374,375],"ші видалив дані з бази відновити","ші-агент видалив мої дані","cursor видалив мою базу даних","ші-агент видалив таблицю","відновити дані після видалення ші",{},true,"ШІ-агент видалив мої дані в Supabase","\u002Fblog\u002Fai-agent-deleted-my-database","2026-08-21",{"title":5,"description":350},"blog\u002Fai-agent-deleted-my-database",[384,385,386],"Якщо ШІ-агент видалив дані з вашої бази, відновити можна те, що було в останній копії, знятій до цього. Те, що з'явилося після неї, не записано більше ніде.","Спершу зупиніть усе, що пише нові рядки. Відновлення прибирає все додане після копії, тож реєстрація, яка надійде зараз, стане рядком, який ви видалите власноруч.","Агент не може повернути рядки. Він ніколи їх не тримав, а запустити його ще раз проти живої бази означає ще одну нагоду втратити більше.","9Kx19QBhfdJWzk-GYGqvkpv6TeZoSS2WYWmAxpcsAy0",1787826051146]