2012-10-14 22 views
5

PostgreSQL veritabanımda terminalde sql kullanarak (ubuntu lucid'de) bazı kayıtları düzenlerken yanlış bir güncelleme yaptım. YerinePostgreSQL'te bir güncelleştirme nasıl geri alınır

-

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

ben daktilo -

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

Yani, tüm kayıtları artık aynı start_time değere sahip.

Bu değişikliği geri almanın bir yolu var mı? Tabloda 500+ kayıt var ve her kayıt için start_time değerinin ne olduğunu bilmiyordum

Sonsuza dek mi kaybetti?

+3

Gelecek için: autocommit etkinken çalıştırılmamalıdır. –

+0

dersi öğrenildi! güncellemeleri yapmadan önce her zaman yedekleyin, sadece emin olun! Eğer Point-In-Time Recovery'yi (PITR) etkinleştirdiyseniz, bu mümkün olabilir. – jerjer

cevap

6

Zaten taahhütte bulunan bir işlem olduğunu mu varsayıyorum? Eğer öyleyse, bu "taahhüt" demek, geri dönemezsiniz.

Şanslıysanız bazı veriler kurtarılabilir. ŞİMDİ veritabanını durdurun.

Here's an answer I wrote on the same topic earlier. Umarım yardımcı olur.

Bu da olabilir: Recoved deleted rows in postgresql.

Veriler kesinlikle kritik olmadıkça, yedeklerden geri yükleme yapmak çok daha kolay ve daha az ağrılı olacaktır. Yedeklemeniz yoksa, kendinizi güçlü bir şekilde düşünün.

+0

teşekkürler ... Postgres servisini durdurdum ... Verileri şimdi kurtarmamın bir yolu var mı? – damon

+1

@damon Tüm veritabanının dosya sistemi düzeyinde bir kopyasını alın ve güvenli bir yere koyun. –