2012-10-14 7 views
5

PostgreSQLデータベースのいくつかのレコードをsqlでターミナル(ubuntu lucid内)を使って編集していましたが、間違ったアップデートを行いました。PostgreSQLでアップデートをロールバックする方法

の代わりに -

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

私は、入力された -

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

をだから、すべてのレコードは現在、同じSTART_TIME値を持っています。

この変更を元に戻す方法はありますか?テーブルには500以上のレコードがあり、各レコードのstart_timeの値が何であったか分かりません

永遠に失われていますか?

+3

将来:自動コミットを有効にして実行しないでください。 –

+0

レッスンを学んだ!アップデートを行う前に必ずバックアップしてください。 Point-In-Time Recovery(PITR)を有効にしている場合、これが可能です。 – jerjer

答えて

6

私はそれが既にコミットされたトランザクションであると仮定していますか?もしそうなら、それは "コミット"が意味することです、あなたは戻れません。

幸運なことに、一部のデータは回復可能な場合があります。今すぐデータベースを停止します。

Here's an answer I wrote on the same topic earlier。それが役に立ちそうです。

Recoved deleted rows in postgresqlでもかまいません。

データが絶対的に重要でない限り、バックアップから復元するだけでは、ずっと簡単になり、苦労も少なくなります。あなたがバックアップを持っていない場合は、あなた自身が健全に挫折したと考えてください。

+0

thanks..私はpostgresサービスを停止しました。私は今データを回復できる何らかの方法がありますか? – damon

+1

@damonデータベース全体のファイルシステムレベルのコピーをとり、安全な場所に置きます。 –

関連する問題