Heroku db:pull Taps Load Error: 没有要加载的此类文件 -- pg.



我在使用 ruby 1.9.2-p320 和 Heroku 的 Taps 时使用"db"命令时遇到以下错误,例如:

heroku db:pull --app my-app

这会产生以下错误:

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

-或-

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

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

尽管有一个已知的错误会导致"时区位移"错误:heroku db:push 不起作用,使用 taps gem,但我还没有看到任何直接解决此问题的 SO 帖子。

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

这仅在您使用生产数据库之一或新的 Heroku postgres 开发或基本计划时才有效。如果您仍在使用较旧的共享数据库计划,我建议您切换到新的开发计划。

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

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

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

$ 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工具,因此它是一个更具可预测性和弹性的工具。

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

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

我找到的解决方案,使用 https://github.com/ricardochimal/taps/issues/92 的提示在这里详细介绍:https://github.com/ricardochimal/taps/issues/92#issuecomment-6486535

简而言之,据

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

如果你仍然坚持使用Taps,请在GH上看到这条评论,因为海报doshea似乎比我或jfeust更彻底地研究了它。

我还要在这里重申,如果你不需要Taps,那么heroku-pgtransfer就是你的朋友。 在这里查看Ryan对我问题的回答以及他关于使用新工具的优秀博客文章。

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

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

当然,这需要安装 p320 并安装水龙头和 sqllite3 gem。很容易到位。

相关内容

  • 没有找到相关文章

最新更新