如何将Heroku数据提取到本地SQLite3数据库中

问题描述 投票:6回答:2

我正在尝试对我的Rails应用程序中的数据进行本地备份,该应用程序已部署到Heroku,并遇到了问题。我按照taps instructions并安装了分接头。

我遇到两种错误。我在本地创建了一个SQLite数据库,并尝试使用以下命令提取数据:

(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自动检测我的应用程序中的开发数据库并重写它,尽管那不是我想要的。然后我开始出现类似错误:

/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)
ruby-on-rails sqlite heroku sequel taps
2个回答
10
投票

一些问题。首先,您的Sequel连接字符串错误。尝试

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

如果仍然遇到异常,则可能是由于权限问题所致,因此请确保可以写入该路径。

您的Rubygem版本错误是因为当前版本的水龙头需要Sequel 3.13.0,并且您已经激活了3.15.0。您要么需要使用3.13.0,要么需要编辑taps gem规范以使用3.15.0。

PRIMARY KEY必须是唯一的,这是一个SQLite异常。没有完整的回溯和代码,很难猜测为什么会发生。


0
投票

SQLite3::SQLException: PRIMARY KEY must be unique (Sequel::DatabaseError)问题,在拉取过程中将数据写入heroku数据库时,我已经看到了。如果我确保heroku上没有任何活动,似乎可以正常工作。这是一种不科学的方法,可能纯粹是巧合,但似乎对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.