ruby Heroku db:pull分接头加载错误:没有这样的文件加载-- pg

uurv41yg  于 2023-08-04  发布在  Ruby
关注(0)|答案(4)|浏览(97)

我在使用ruby 1.9.2-p320和Heroku的Taps-using '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


(And是的,顺便说一句,我有所有正确的gem,包括postgres-在本地运行良好-和sqlite3,以及卸载,重新安装和更新了tap和heroku gem,并将它们包括在我的Gemfile中。我正在运行Rails 3.2.6)
虽然有一个已知的bug会导致“时区位移”错误:heroku db:push not working, using taps gem,我还没有看到任何SO帖子直接解决这个问题。

nfg76nw0

nfg76nw01#

在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

kg7wmglp

kg7wmglp2#

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

yrdbyhpb

yrdbyhpb3#

我找到的解决方案,使用来自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问题有关,不确定。
如果你仍然挂在那里与水龙头,请参阅这一评论在生长激素,作为海报doshea似乎已经调查了它甚至比我或jfeust更彻底。
我也会在这里重申,如果你不需要Taps,那么heroku-pgtransfer是你的朋友。请参阅有关使用较新工具的Ryan's answer to my question herehis excellent blog post

bprjcwpo

bprjcwpo4#

就像@Likethesky一样,你可以降级。或者,只要

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

字符串
当然,这需要安装p320和tap以及sqllite 3 gems。很容易安装到位。

相关问题