将数据推送到Heroku时出错:时区位移超出范围

pup*_*eno 27 postgresql heroku taps

我运行以下命令将本地数据库的内容推送到Heroku:

heroku db:push --app my-app
Run Code Online (Sandbox Code Playgroud)

从我的家用电脑这完美无缺,但从我的工作电脑我得到这个错误:

点击服务器错误:PGError:错误:时区位移超出范围:"2011-11-15 12:00:00.000000 + 5894114400"

我不确定那个日期的来源,我无法在任何地方的数据中找到它.有什么想法正在发生和/或如何修复它?

pup*_*eno 32

使用Ruby 1.9.2-p290而不是1.9.3-p0为我修复它.根据Roger Braun的说法,这就是原因:

问题是(我认为),编组在Ruby 1.9.2和1.9.3之间发生了变化,所以这不是一个真正的水龙头错误.只需使用heroku运行的任何版本来推送和拉取数据库(可能是1.9.2).


Adi*_*ghi 9

从Ruby 1.9.3降级到Ruby 1.9.2对我来说听起来不是一个吸引人的选择.

Heroku的devcentre页面实际上建议使用pgbackups插件来管理数据库(https://devcenter.heroku.com/articles/pgbackups).听起来它只是将生产数据库的备份下载到本地机器,但如果仔细阅读,它们有一个大的部分处理"导入数据库".他们建议您将数据库上传到可公开访问的位置并运行建议的命令

heroku pgbackups:restore DATABASE 'http://s3.amazonaws.com/.....mydb.dump?authparameters'
Run Code Online (Sandbox Code Playgroud)

因此,实际上它们提供了转储本地数据库的命令,建议将其上传到heroku的服务器可以从中获取数据库转储的位置的方法(假设您的本地开发机器不能从Internet公开访问),然后使用上面的命令它将被上传到heroku的生产环境中.

只是把它放在这里,因为我认为问题一直持续很长一段时间没有充分解决真正的问题.


Kev*_*ell 8

我在Heroku上运行1.9.3p125,在本地机器上运行1.9.3p125.如果我想在上传时db:push切换到1.9.2 :

rvm use ruby-1.9.2-p290
heroku db:push --app my-app
rvm use ruby-1.9.3-p125
Run Code Online (Sandbox Code Playgroud)

然后推送完成后,我切换回1.9.3.