2012-06-21 15 views
6

Dostałem następujące błędy użyciu Ruby 1.9.2-P320 z Heroku za Krany wykorzystujących 'db' poleceń takich jak:Heroku db: pull Gwintowniki błąd obciążenie: Nie ma takiego pliku do załadowania - pg

heroku db:pull --app my-app 

która produkuje błędy jak:

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

-lub-

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

(i tak, przy okazji, mam wszystkie poprawne klejnotów, w tym zarówno PostgreSQL - biegu ning fine lokalnie - i sqlite3, a także po odinstalowaniu, ponownym zainstalowaniu i zaktualizowaniu klejnotów Heroku z kranów, włączając je, a także nie dołączając ich do mojego Gemfile. Używam Rails 3.2.6)

Chociaż istnieje znany błąd, który powoduje błąd "przesunięcia strefy czasowej": heroku db:push not working, using taps gem, nie widziałem żadnych wpisów SO, które bezpośrednio rozwiązują ten problem.

Odpowiedz

2

Rozwiązanie znalazłem, korzystając z podpowiedzi https://github.com/ricardochimal/taps/issues/92 jest szczegółowo tutaj: https://github.com/ricardochimal/taps/issues/92#issuecomment-6486535

Krótka niego, jest to, że Ruby 1.9.2-P320 wydaje się być problemem, o ile mogę powiedzieć. Obniżenie do rubinu 1.9.2-p290 naprawiło to dla mnie. Może to być związane z problemami z rubinem 1.9.3, o których mowa w powyższym linku, nie jestem pewien.

Jeśli nadal wisisz z Taps, zobacz this comment at GH, ponieważ plakat doshea wygląda na jeszcze dokładniej niż ja lub jammust.

Powtórzę jeszcze raz, że jeśli nie potrzebujesz Taps, to heroku-pgtransfer jest twoim przyjacielem. Zobacz Ryan's answer to my question here i his excellent blog post na temat korzystania z nowszego narzędzia.

+0

FYI, Klejnot do gwintowników nie działa dla mnie z rubinem 1.9.2-p290. Pojawia się błąd "Błąd ładowania wątków: brak takiego pliku do załadowania - dotknięcia/operacja". – Clay

+1

Taps zaczął działać dla mnie, używając tych samych wersji Ruby na Heroku i lokalnie. [Zobacz mój komentarz do GH] (https://github.com/ricardochimal/taps/issues/92#issuecomment-6486535): Proponuję spróbować: $ 'heroku uruchom 'ruby -v'' i zobacz, jaka jest wersja Heroku działa, a następnie aktualizuje lokalny, aby pasował. Brak gwarancji, ale wydaje mi się, że to było to, co zrobiłem dla mnie (znowu, zgadywanie, być może winnym jest [argumentowanie Ruby'ego] (http://stackoverflow.com/questions/8151571/error-when-pushing-data-to- heroku-time-zone-displacement-out-of-range)?). Zobacz także komentarz jfeust w GH na pasku narzędziowym Heroku. – likethesky

+0

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

15

Taps nie jest już zalecanym narzędziem do użycia podczas migracji danych między instancjami PostgreSQL. Zamiast tego proszę spróbować.

Będzie to działać tylko, jeśli używasz jednego z production databases lub nowego Heroku postgres dev or basic plans. Jeśli nadal korzystasz ze starszej wersji udostępnianej bazy danych, sugerowałbym przejście na nowy plan deweloperski.

pierwsze, znaleźć adres URL do db na Heroku:

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

Następnie przenieść z Heroku db do lokalnego DB:

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

Ponieważ narzędzie Heroku-PG-przelew wykorzystuje Postgres-tych natywna funkcja pg_dump to znacznie bardziej przewidywalne i elastyczne narzędzie.

Pisałem o tym więcej tutaj: Using heroku pg:transfer to migrate Postres databases

+0

Podziękowania [@Ryan Daigle] (http://stackoverflow.com/users/1339184/ryan-daigle) - - Zgadzam się, że transfer heroku-pg jest lepszy dla tych, którzy używają planu rozwoju postgres Heroku (i zalecają, żeby użytkownicy tego używali!), Jednak moje pytanie dotyczy używania Taps, więc zaznaczyłem moją jako zaakceptowaną odpowiedź . Przeważnie pisałem o tym pytaniu i odpowiedzi, ponieważ starałem się dowiedzieć, co jest nie tak, więc jeśli inni nadal używają Taps, mam nadzieję, że uznają to (i twoją radę) za przydatną. Dzięki! – likethesky

+0

Dziękuję bardzo za opublikowanie tego. Taps był bzdurny do pracy, po tygodniach bólu. W końcu zastosowałem to podejście, a BAM działał po raz pierwszy! THANKYOU THANKYOU – Evolve

+0

DZIĘKUJEMY! Straciłem wiele godzin próbując zmusić Taps do współpracy z Heroku i jest to pierwsza wzmianka o pg: transfer. Pracował po raz pierwszy! – matadur

2

Moje rozwiązanie było dodać gem krany i gem sqlite3 (nawet, że nie wszędzie SQLite w aplikacji) do gemfile (w budowie) .

+0

Działa to również po uruchomieniu "gem install sqlite3" i pozostawieniu go poza swoim gemfile. – brent

1

Jak na @likethesky, można przejść na niższą wersję.Alternatywnie, tylko

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

Oczywiście, że wymaga zainstalowania p320 z zainstalowanymi klejnotami tap i sqllite3. Wystarczająco łatwe do założenia.

Powiązane problemy