6

HerokuにデプロイされているRailsアプリケーションからデータのローカルバックアップを作成しようとしていますが、問題が発生しています。Tapsの指示に従い、Tapsをインストールしました。

2種類のエラーが発生します。SQLite DBをローカルで作成し、次のコマンドでデータをプルしてみました。

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

また

(sudo) heroku db:pull sqlite://username:password@localhost/Users/username/folder/testbackup.db

しかし、どちらの方法でも私はこれを取得します:

Failed to connect to database:
  Sequel::DatabaseConnectionError -> SQLite3::CantOpenException: could not open database: unable to open database file

または、Tapsにアプリ内の開発DBを自動検出させて書き直してみましたが、それは私が望んでいたことではありませんでした。次に、次のようなエラーが発生し始めます。

/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'
  from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1056:in `gem'
  from /Library/Ruby/Gems/1.8/gems/taps-0.3.10/bin/schema:4

そして最終的に

/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 `check': SQLite3::SQLException: PRIMARY KEY must be unique (Sequel::DatabaseError)
4

2 に答える 2

9

いくつかの問題。まず、Sequel接続文字列が間違っています。試す

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

それでも例外が発生する場合は、権限の問題が原因である可能性があるため、そのパスに書き込めることを確認してください。

Rubygemバージョンエラーは、現在のバージョンのタップにSequel 3.13.0が必要であり、すでに3.15.0をアクティブ化していることが原因です。3.13.0を使用するか、3.15.0を使用するようにタップgem仕様を編集する必要があります。

PRIMARY KEYは一意である必要があり、SQLiteの例外です。完全なバックトレースとコードがなければ、なぜそれが発生しているのかを推測するのは困難です。

于 2010-09-15T20:27:01.943 に答える
0

このSQLite3::SQLException: PRIMARY KEY must be unique (Sequel::DatabaseError)問題で、プルの進行中にデータがherokuデータベースに書き込まれているときに発生しました。Herokuでアクティビティがないことを確認すれば、機能しているようです。これは非科学的で、おそらく純粋に偶然のアプローチですが、私にとってはうまくいくようです。

于 2013-06-19T02:30:29.287 に答える