6

使用 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

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

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

4

4 回答 4

15

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

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

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

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

于 2012-06-21T19:16:40.973 回答
2

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

于 2012-07-18T18:48:53.383 回答
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 对我的问题的回答以及他关于使用更新工具的出色博客文章。

于 2012-06-21T17:31:14.213 回答
1

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

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

当然,这需要安装 p320 并安装 tap 和 sqllite3 gems。很容易就位。

于 2012-12-13T05:16:08.853 回答