Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将Heroku数据拉入本地SQLite3数据库_Ruby On Rails_Sqlite_Heroku_Sequel_Taps - Fatal编程技术网

Ruby on rails 如何将Heroku数据拉入本地SQLite3数据库

Ruby on rails 如何将Heroku数据拉入本地SQLite3数据库,ruby-on-rails,sqlite,heroku,sequel,taps,Ruby On Rails,Sqlite,Heroku,Sequel,Taps,我试图对部署到Heroku的Rails应用程序中的数据进行本地备份,但遇到了问题。我按照指示安装了水龙头 我有两种错误。我在本地创建了一个SQLite DB,并尝试使用以下命令提取数据: (sudo) heroku db:pull sqlite://Users/username/folder/testbackup.db 或 但无论哪种方式,我都会得到: Failed to connect to database: Sequel::DatabaseConnectionError ->

我试图对部署到Heroku的Rails应用程序中的数据进行本地备份,但遇到了问题。我按照指示安装了水龙头

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

(sudo) heroku db:pull sqlite://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)

有几个问题。首先,您的续集连接字符串是错误的。试一试

heroku db:pull sqlite:///Users/username/folder/testbackup.db
如果仍然出现异常,则可能是由于权限问题,因此请确保可以写入该路径

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


如果是SQLite异常,主键必须是唯一的。如果没有完整的回溯和代码,很难猜测它为什么会发生

对于
SQLite3::SQLException:主键必须是唯一的(Sequel::DatabaseError)
问题,我在拉取过程中将数据写入heroku数据库时看到过。如果我确定heroku上没有任何活动,这似乎有效。这是一种不科学且可能纯粹巧合的方法,但似乎对我有效。

FYI-taps不一定是数据备份。您可能需要检查“bundles”,因为Heroku就是这样备份的。在尝试taps gem之前,您是否尝试启动服务器或脚本/控制台以查看是否可以实际使用db?我认为taps只是数据备份,bundles是数据备份加代码备份。由于我已经在github上获得了所有的代码,我想我只需要从站点中提取数据。至于启动服务器——这不是必要的吗,因为它是一个SQLite数据库,而不是MYSQL?
heroku db:pull sqlite:///Users/username/folder/testbackup.db