2012-10-14 12 views
5

Podczas edytowania niektórych rekordów w mojej bazie danych PostgreSQL przy użyciu sql w terminalu (w systemie Ubuntu Lucid), dokonałem błędnej aktualizacji.Jak przywrócić aktualizację w PostgreSQL

Zamiast -

update mytable set start_time='13:06:00' where id=123; 

Wpisałem -

update mytable set start_time='13:06:00'; 

Tak, wszystkie rekordy są teraz posiadające tę samą wartość start_time.

Czy istnieje sposób na cofnięcie tej zmiany? W tabeli znajduje się około 500 rekordów i nie wiem, jaka była wartość czasu rozpoczęcia dla każdego rekordu:

Czy utracono ją na zawsze?

+3

Dla przyszłości: nie należy uruchamiać z włączonym autocommitem. –

+0

wyciągnięte wnioski! zawsze rób kopie zapasowe przed aktualizacjami, tylko pamiętaj! jeśli włączono funkcję PITR (Point-In-Time Recovery), może to być możliwe. – jerjer

Odpowiedz

6

Zakładam, że była to transakcja, która została już zatwierdzona? Jeśli tak, oznacza to, że "commit" oznacza, że ​​nie możesz wrócić.

Niektóre dane mogą być odzyskiwane, jeśli masz szczęście. Zatrzymaj bazę danych TERAZ.

Here's an answer I wrote on the same topic earlier. Mam nadzieję, że to pomocne.

To może być również: Recoved deleted rows in postgresql.

Jeśli dane nie są bezwzględnie krytyczne, po prostu przywróć z kopii zapasowych, będzie to znacznie łatwiejsze i mniej bolesne. Jeśli nie masz kopii zapasowych, pomyśl o sobie, że jesteś mocno splądrowany.

+0

dzięki .. Zatrzymałem usługę postgres. Czy jest jakiś sposób, aby odzyskać dane teraz? – damon

+1

@damon Pobierz kopię bazy danych na poziomie systemu plików i umieść ją w bezpiecznym miejscu. –

Powiązane problemy