最近、heroku postgresql データベースを扱っているときに問題が発生しました。
特定のユーザーの属性を更新したかった (彼を管理者にしたい) ので、heroku からデータベースをプルして、彼の属性をローカルで更新し、再度プッシュしました。
heroku db:pull
UPDATE users SET user_type = 'admin' WHERE name = 'thisuser'; //in postgres
heroku db:push
すると、以下の問題が発生しました。
!!! Caught Server Exception
HTTP CODE: 500
Taps Server Error: PGError: ERROR: time zone displacement out of range: "2013-01-21 12:00:00.000000+5895153600"
LINE 1: ....facebook.com/thisuser', 'facebook', '2374538475', '2013-01-2...
そのため、エラーから回復するために次のコマンドを再度実行しました。
heroku db:pull
heroku db:push
そして、これにより、本番環境と開発環境の両方から私の DB 全体が一掃されました。2つ質問があります。
- Heroku環境で一部のユーザーの属性を更新する適切な方法は何ですか? 小さなオブジェクトの 1 つの属性を更新するためだけに DB 全体をプルするのは少し多すぎるように思えます。
- 私のアクションが DB からすべてを一掃する結果になったのはなぜですか?
ご協力ありがとうございました。とても感謝しています。