2012-06-21 28 views
6

我已經-用絲錐「DB」得到了使用Ruby 1.9.2-P320與Heroku的下列錯誤命令,如:Heroku的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,以及卸載,重新安裝和更新了heroku寶石,包括它們以及不包括它們在我的Gemfile中。我正在運行Rails 3.2.6)

儘管存在導致「時區位移」錯誤的已知錯誤:heroku db:push not working, using taps gem,但我還沒有看到任何直接解決此問題的SO帖子。

回答

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問題有關,不確定。

如果你仍然在那裏與水龍頭掛在一起,請參閱this comment at GH,因爲海報doshea似乎比我或jfeust更徹底地研究它。

我也在這裏重申,如果你不需要需要點擊,那麼heroku-pgtransfer是你的朋友。有關使用較新的工具,請參閱Ryan's answer to my question herehis excellent blog post

+0

僅供參考,水龍頭寶石不適用於我的紅寶石1.9.2-p290。我收到錯誤'點擊加載錯誤:沒有這樣的文件加載 - 水龍頭/操作。 – Clay

+1

通過在Heroku和本地使用相同的Ruby版本,Tets開始爲我工作。 [見我的GH評論](https://github.com/ricardochimal/taps/issues/92#issuecomment-6486535):我建議你試試:$'heroku run'ruby -v''並查看Heroku的版本是什麼運行,然後更新您的本地匹配。沒有保證,但這似乎是什麼對我來說(再次,猜測,也許是錯的是[Ruby的參數編組](http://stackoverflow.com/questions/8151571/error-when-pushing-data-to- Heroku的時間區位移量超出範圍)?)。另請參閱jfeust在Heroku toolbelt上GH的評論。 – likethesky

+0

Do〜/ .rvm/bin/ruby​​-1.9.2-p320/usr/bin/heroku db:push – Ted

15

在postgres實例之間遷移數據時,不再推薦使用TAP。請改爲嘗試heroku-pg-transfer

這隻適用於使用production databasesHeroku postgres dev or basic plans之一。如果你仍然在舊的共享數據庫計劃,我會建議切換到新的開發計劃。

首先,找到URL到您的分貝在Heroku:

$ heroku config:get DATABASE_URL 
postgres://yada:[email protected]:5432/123 

然後從Heroku的傳輸分貝到本地數據庫:

$ heroku plugins:install https://github.com/ddollar/heroku-pg-transfer 
$ heroku pg:transfer -t postgres://localhost/dbname -f postgres://yada:[email protected]/123 

由於Heroku的-PG-傳輸工具使用的Postgres的原生pg_dump工具,它是一個更可預測和有彈性的工具。

我已經寫了更多關於它在這裏:Using heroku pg:transfer to migrate Postres databases

+0

謝謝[@Ryan Daigle](http://stackoverflow.com/users/1339184/ryan-daigle) - - 我同意heroku-pg-transfer對於那些使用Heroku postgres dev計劃的用戶來說更好(推薦用戶使用它!),但是我的問題是關於使用Tap的問題,所以我將它標記爲接受的答案。我大多發佈了這個問答,因爲我試圖弄清楚什麼是錯誤的,所以如果其他人仍在使用Taps,我希望他們發現這個(和你的建議)有用。謝謝! – likethesky

+0

非常感謝發佈此信息。經過數週的痛苦之後,水龍頭一直在與之合作。最後使用這種方法,BAM第一次工作! THANKYOU THANKYOU – Evolve

+0

謝謝!試圖讓Tap與Heroku一起工作已經損失了很多時間,這是我見過的第一次提到的pg:transfer。第一次工作! – matadur

2

我的解決辦法是水龍頭寶石和寶石sqlite3的(即使我沒有在應用的任何SQLite的)加入到Gemfile中(開發中) 。

+0

這也適用,如果你只是運行'gem install sqlite3'並將其保留在您的gemfile中。 – brent

1

根據@likethesky,您可以降級。或者,只需要

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

當然,這需要安裝p320以安裝tap和sqllite3 gems。容易到位。

相關問題