Как отменить удаление моих данных в Postgres после операции удаления?

Я ничего не сделал. Я просто запускаю эту команду DELETE FROM feed_republic. Но я хочу снова получить свои данные. Что я должен делать?

Когда я запускаю rollback, я получаю следующее сообщение. Пожалуйста помоги!

WARNING:  there is no transaction in progress

Я не использовал какую-либо фиксацию или любую другую команду, в отличие от этого вопроса Могу ли я отменить уже совершенную транзакцию? (потеря данных).


person Mr.Robot    schedule 14.03.2019    source источник
comment
Возможный дубликат Восстановить удаленные записи в PostgreSQL   -  person Robby Cornelissen    schedule 14.03.2019
comment
Вы не можете откатить транзакцию, которая уже зафиксирована.   -  person Robby Cornelissen    schedule 14.03.2019
comment
Я не использовал команду фиксации. Итак, моя база данных зафиксирована или нет?   -  person Mr.Robot    schedule 14.03.2019
comment
Боюсь, нет простого способа вернуть данные. Надеюсь, вы не сделали этого в продакшене. Я полагаю, что вы новичок в Postgres. Oracle не похожа на то, что по умолчанию dml-файлы можно откатить при запуске в виде одного оператора. В Postgres оператор автоматически фиксируется, если вы не выполняете его внутри транзакции, начиная с BEGIN;   -  person Kaushik Nayak    schedule 14.03.2019
comment
Это совершено. Вы выполнили свою операцию вне области транзакции, поэтому она фиксируется автоматически.   -  person Robby Cornelissen    schedule 14.03.2019
comment
Не в производстве, но это проект моего колледжа. Мы собираем новости за долгое время и храним их в AWS RDS. Это важно, потому что нам нужно обучать модель на наших данных.   -  person Mr.Robot    schedule 14.03.2019
comment
Любой другой шаг, который я могу сделать. Если вы знаете. Потому что я не так много работаю над sql, и эти данные важны для моей презентации в колледже.   -  person Mr.Robot    schedule 14.03.2019
comment
Похоже, вы работаете в режиме автоматической фиксации, поэтому ваша команда DELETE была зафиксирована немедленно. Если у вас нет резервной копии, единственное, что вы можете попробовать, это следовать ответу в stackoverflow.com/questions/20113586/ и попробуйте pg_dirtyread. Еще проще: просто просмотрите свои резервные копии RDS и восстановите одну из них (если вы можете позволить себе потерять другие изменения данных): aws.amazon.com/rds/details/backup   -  person Ancoron    schedule 14.03.2019


Ответы (1)


PostgreSQL работает в режиме autocommit, поэтому каждый оператор выполняется в своей собственной транзакции, если вы явно не запускаете транзакцию с BEGIN или START TRANSACTION.

Единственный способ вернуть данные — это восстановить их из резервной копии.

person Laurenz Albe    schedule 14.03.2019