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

时间:2012-06-21 17:31:14

标签: ruby heroku ruby-1.9.2 ruby-1.9.3 taps

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

heroku db:pull --app my-app

会产生如下错误:

Taps Load Error: no such file to load -- sqlite3

-OR -

Taps Load Error: no such file to load -- pg

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

虽然有一个已知错误导致“时区位移”错误:heroku db:push not working, using taps gem,但我还没有看到任何直接解决此问题的SO帖子。

4 个答案:

答案 0 :(得分:15)

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

仅当您使用production databases或新Heroku postgres dev or basic plans之一时,此功能才有效。如果您仍在旧的共享数据库计划中,我建议您切换到新的开发计划。

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

$ heroku config:get DATABASE_URL
postgres://yada:yada@ec2-107-21-122-141.compute-1.amazonaws.com:5432/123

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

$ heroku plugins:install https://github.com/ddollar/heroku-pg-transfer
$ heroku pg:transfer -t postgres://localhost/dbname -f postgres://yada:yada@ec2.../123

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

我在这里写了更多关于它的信息:Using heroku pg:transfer to migrate Postres databases

答案 1 :(得分:2)

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

缺点是,据我所知,红宝石1.9.2-p320似乎是个问题。降级为红宝石1.9.2-p290为我修好了。这可能与上面链接中提到的ruby 1.9.3问题有关,不确定。

如果你仍然使用Taps挂在那里,请参阅this comment at GH,因为海报doshea似乎比我或jfeust更彻底地调查了它。

我还要在此重申,如果你需要Taps,那么heroku-pgtransfer就是你的朋友。使用较新的工具,请参阅Ryan's answer to my question herehis excellent blog post

答案 2 :(得分:2)

我的解决方案是将taps gem和sqlite3 gem(即使我不在应用程序中的任何地方使用sqlite)添加到gemfile中(正在开发中)。

答案 3 :(得分:1)

根据@likethesky,您可以降级。或者,只是

~/.rvm/bin/ruby-1.9.2-p320 /usr/bin/heroku db:push

当然,必须安装p320并安装tap和sqllite3宝石。很容易就位。