【发布时间】:2013-01-21 02:46:12
【问题描述】:
我最近在处理heroku postgresql 数据库时遇到了一个问题。
我想更新某个用户的属性(让他成为管理员),所以我从 heroku 中拉出 db 以在本地更新他的属性并再次推送。
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
这导致我的整个数据库从生产和开发中消失。 我有两个问题要问。
- 在 Heroku 环境中更新某些用户的属性的正确方法是什么?仅仅为了更新一个小对象的一个属性而拉取整个数据库似乎有点过分。
- 为什么我的行为会导致数据库中的所有内容都被清除?
感谢您的帮助。非常感谢。
【问题讨论】:
-
您可以在生产数据库上使用 psql 而无需复制整个内容 - devcenter.heroku.com/articles/heroku-postgresql#using-the-cli
heroku pg:psql- 每当您尝试对生产系统进行任何数据更新时 - 始终先备份 - devcenter.heroku.com/articles/pgbackups
标签: ruby-on-rails database postgresql heroku