2012-10-14 14 views
5

Durante la modifica di alcuni record nel mio database PostgreSQL utilizzando SQL nel terminale (in ubuntu lucid), ho apportato un aggiornamento errato.Come eseguire il rollback di un aggiornamento in PostgreSQL

Invece di -

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

ho digitato -

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

Quindi, tutti i record ora stanno avendo lo stesso valore start_time.

C'è un modo per annullare questa modifica? Ci sono oltre 500 record nella tabella e non so quale sia il valore di start_time per ogni record

È perduto per sempre?

+3

Per il futuro: non si dovrebbe eseguire con autocommit abilitato. –

+0

lezioni apprese! fai sempre il backup prima di fare aggiornamenti, ma sii sicuro! se è stato abilitato il recupero point-in-time (PITR), ciò potrebbe essere possibile. – jerjer

risposta

6

Suppongo che si tratti di una transazione già impegnata? Se è così, questo è ciò che significa "commit", non puoi tornare indietro.

Alcuni dati potrebbero essere recuperabili se si è fortunati. Ferma il database ORA.

Here's an answer I wrote on the same topic earlier. Spero sia utile.

Questo potrebbe essere anche: Recoved deleted rows in postgresql.

A meno che i dati non siano assolutamente critici, è sufficiente ripristinare dai backup, sarà molto più semplice e meno doloroso. Se non hai avuto i backup, considera te stesso fustigato.

+0

grazie ... Ho interrotto il servizio postgres. C'è un modo per recuperare i dati ora? – damon

+1

@damon Effettua una copia a livello di file system dell'intero database e mettila in un posto sicuro. –

Problemi correlati