2010-09-15 21 views
6

Heroku'ya dağıtılan Rails uygulamasından gelen verilerin yerel bir yedeğini almaya çalışıyorum ve sorun yaşamaya çalışıyorum. Buradaki talimatları takip ettim: http://docs.heroku.com/taps ve Taps yüklü.Heroku verilerini yerel bir SQLite3 veritabanına nasıl çekerim? Sorunlara dönüşüyor

İki tür hata alıyorum. Ben yerel bir SQLite db oluşturulan ve bu komutla verileri çekerek çalıştı:

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

veya

: sqlite çekin

(sudo) Heroku db: // kullanıcı adı:: sqlite çekin [email protected]/Users/username/folder/testbackup.db

ama her iki durumda da bu alın:

veritabanına bağlanamadı : Sequel :: DatabaseConnectionError -> SQLite3 :: CantOpenException: açılamadı veritabanı:

Alternatif veritabanı dosyası açılamıyor, ben Musluklar otomatik algılama icar çalıştı benim app geliştirme db ve yeniden yazmak, ne istediğimi tam olarak değil.

/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' /opt/local/lib/ruby/site_ruby/1.8 gelen : gibi Sonra başlıyorsun hatalar `taş' sonunda

/

/Library/Ruby/Gems/1.8/gems/taps-0.3.10/bin/schema:4 gelen ve /rubygems.rb:1056:in Sistem/Kitaplık/Çerçeveler/Ruby.framework/Sürümler/1.8/usr/lib/ruby ​​/ taşlar/1.8/taşlar/sqlite3-ruby-1.2.4/lib/sqlite3/errors.rb: 62: in ch Eck ': SQLite3 :: SQLException: PRIMARY KEY önceden benzersiz (devamı :: DatabaseError)

Teşekkür ton olmalı, mümkün olduğunca kısa sürede bu verileri yedeklemek oldukça önemli!

+0

FYI - dokunuşları mutlaka veri yedeklemesi değildir. 'Bundles'ı kontrol etmek isteyebilirsiniz, çünkü Heroku'nun bu şeyleri nasıl geri aldığını. – s84

+0

Sunucunuzu çalıştırmadan önce db'yi gerçekten kullanıp kullanamayacağınızı görmek için sunucunuzu veya komut dosyasını/konsolunuzu çalıştırmayı denediniz mi? – s84

+0

Muslukların sadece veri yedeklemesi olduğunu ve paketlerin veri yedekleme ve kod yedeklemesi olduğunu sanmıştım. Github'taki tüm kodları aldığımdan, sadece siteden veri almam gerektiğini düşündüm. Sunucuyu kapatmak için - gerekli değil, çünkü MYSQL'in aksine bir SQLite veritabanı var mı? – kateray

cevap

10

Birkaç sorun. İlk olarak, Sequel bağlantı dizeniz yanlış. Hala bir istisna alırsanız

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

, bir izin sorunu nedeniyle olabilir deneyin, bu nedenle bu yolu yazmak emin olun.

RubyGem sürümünüzün hatalarından biri, şu anki musluk sürümlerinin Sequel 3.13.0 sürümünü gerektirdiğinden ve zaten 3.15.0 etkinleştirilmiş olmanızdır. Ya 3.13.0 kullanmanız gerekiyor ya da 3.15.0'ı kullanmak için musluklar spec'ı düzenlemeniz gerekiyor.

PRIMARY KEY benzersiz olmalı bir SQLite özel durumudur. Tam backtrace ve kod olmadan neden olduğunu tahmin etmek zordur.

0

SQLite3::SQLException: PRIMARY KEY must be unique (Sequel::DatabaseError) sorunuyla, çekişme devam ederken veriler heroku veritabanına yazıldığında bunu gördüm. Heroku'da etkinlik olmadığından emin olursam işe yarar.Bu, bilim dışı ve muhtemelen tamamen tesadüfi bir yaklaşımdır, ama benim için işe yarıyor gibi görünüyor.

İlgili konular