2010-09-15 8 views
6

Próbuję wykonać lokalną kopię zapasową danych z mojej aplikacji Railsowej, która jest wdrażana w Heroku i napotyka problemy. Postępowałem zgodnie z instrukcjami tutaj: http://docs.heroku.com/taps i zainstalowałem Taps.Jak mogę pobrać dane heroku do lokalnej bazy danych SQLite3? Występują problemy

Dostaję dwa rodzaje błędów. I stworzył db SQLite lokalnie i próbowała ciągnąć dane z tym poleceniem:

(sudo) Heroku db: pull sqlite: //Users/username/folder/testbackup.db

lub

(sudo) Heroku db: pull SQLite: // login: [email protected]/Users/username/folder/testbackup.db

ale tak czy inaczej mam to:

Nie można połączyć się z bazą danych: Sequel :: DatabaseConnectionError -> SQLite3 :: CantOpenException: nie można otworzyć bazy danych: nie można otworzyć pliku bazy danych

Alternatywnie, próbowałem pozwalając Krany automatyczne wykrycie db rozwojowy w mojej aplikacji i przepisać go, choć nie jest to dokładnie to, czego chciałem. Potem zaczną się błędy takie jak:

/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:777:in report_activate_error': RubyGem version error: sequel(3.15.0 not ~> 3.13.0) (Gem::LoadError) from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:211:in activate” od /opt/local/lib/ruby/site_ruby/1.8 /rubygems.rb:1056:in `gem” od /Library/Ruby/Gems/1.8/gems/taps-0.3.10/bin/schema:4

i ostatecznie

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby ​​/ gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/errors.rb: 62: in `ch Eck: SQLite3 :: SQLException: PRIMARY KEY musi być unikalny (Sequel :: Databaseerror)

Dzięki ton z góry, to dość ważne, aby rozpocząć tworzenie kopii zapasowych tych danych tak szybko, jak to możliwe!

+0

FYI - dotknięcia niekoniecznie są kopiami zapasowymi danych. Możesz chcieć sprawdzić "pakunki", bo tak właśnie jest w Heroku. – s84

+0

Czy próbowałeś uruchomić serwer lub skrypt/konsolę, aby sprawdzić, czy rzeczywiście możesz użyć bazy danych zanim spróbujesz klejnotu? – s84

+0

Myślałem, że krany to po prostu kopie zapasowe danych, a pakiety to kopie zapasowe danych i kopie zapasowe kodu. Ponieważ mam cały kod na githubie, pomyślałem, że muszę pobrać dane ze strony. Co do uruchamiania serwera - czy nie jest to konieczne, ponieważ jest to baza danych SQLite w przeciwieństwie do MYSQL? – kateray

Odpowiedz

10

Kilka problemów. Po pierwsze, ciąg połączenia Sequel jest nieprawidłowy. Wypróbuj

heroku db:pull sqlite:///Users/username/folder/testbackup.db 

Jeśli nadal masz wyjątek, może to być spowodowane problemem z pozwoleniem, więc upewnij się, że możesz pisać na tej ścieżce.

Twój błąd w wersji Rubygem wynika z tego, że bieżąca wersja kranów wymaga Sequel 3.13.0, a Ty już aktywowałeś wersję 3.15.0. Musisz użyć 3.13.0 lub edytować edycję klejnotów, aby użyć wersji 3.15.0.

Klucz podstawowy PRIMARY musi być unikalny to wyjątek SQLite. Bez pełnego śledzenia wstecznego i kodu trudno jest odgadnąć, dlaczego tak się dzieje.

0

Z numerem SQLite3::SQLException: PRIMARY KEY must be unique (Sequel::DatabaseError) widziałem go, gdy dane są zapisywane w bazie danych heroku, gdy trwa pobieranie. Wydaje się działać, jeśli upewnię się, że nie ma żadnej aktywności na heroku.To podejście nienaukowe i być może zupełnie przypadkowe, ale wydaje się, że działa dla mnie.

Powiązane problemy