Heroku db:pull Taps Load Error:没有这样的文件加载 - pg

lik*_*sky 6 ruby heroku taps ruby-1.9.2 ruby-1.9.3

我使用ruby 1.9.2-p320和Heroku的Taps一起使用'db'命令得到以下错误,例如:

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

这会产生如下错误:

Taps Load Error: no such file to load -- sqlite3
Run Code Online (Sandbox Code Playgroud)

-要么-

Taps Load Error: no such file to load -- pg
Run Code Online (Sandbox Code Playgroud)

(是的,顺便说一下,我拥有所有正确的宝石,包括postgres - 本地运行良好 - 和sqlite3,以及卸载,重新安装和更新水龙头和heroku宝石,包括它们以及不包括它们将它们包含在我的Gemfile中.我正在运行Rails 3.2.6)

虽然有一个已知的错误会导致"时区位移"错误:heroku db:push not working,使用tap gem,我还没有看到任何直接解决此问题的SO帖子.

Rya*_*gle 15

在postgres实例之间迁移数据时,不再使用Taps作为推荐的工具.请试试heroku-pg-transfer.

这只有在您使用其中一个生产数据库或新的Heroku postgres dev或基本计划时才有效.如果您仍在旧的共享数据库计划中,我建议您切换到新的开发计划.

首先,在Heroku上找到数据库的URL:

$ heroku config:get DATABASE_URL
postgres://yada:yada@ec2-107-21-122-141.compute-1.amazonaws.com:5432/123
Run Code Online (Sandbox Code Playgroud)

然后从heroku数据库传输到本地数据库:

$ heroku plugins:install https://github.com/ddollar/heroku-pg-transfer
$ heroku pg:transfer -t postgres://localhost/dbname -f postgres://yada:yada@ec2.../123
Run Code Online (Sandbox Code Playgroud)

由于heroku-pg-transfer工具使用postgres的原生pg_dump工具,因此它是一种更具可预测性和弹性的工具.

我在这里写了更多关于它的信息:使用heroku pg:transfer来迁移Postres数据库


lik*_*sky 2

我找到的解决方案,使用https://github.com/ricardochimal/taps/issues/92的提示,详细信息如下: https: //github.com/ricardochimal/taps/issues/92#issuecomment-6486535

简而言之,据我所知,ruby 1.9.2-p320 似乎是问题所在。降级到 ruby​​ 1.9.2-p290 为我解决了这个问题。这可能与上面链接中提到的 ruby​​ 1.9.3 问题有关,不确定。

如果您仍然坚持使用 Taps,请参阅GH 上的这条评论,因为发帖人 doshea 似乎比我或 jfeust 更彻底地研究了它。

我还要在这里重申,如果您不需要Taps,那么 heroku-pgtransfer 是您的朋友。请参阅Ryan 对我的问题的回答,以及他关于使用新工具的精彩博客文章。