【问题标题】:How to pull Heroku data into a local SQLite3 database如何将 Heroku 数据拉入本地 SQLite3 数据库
【发布时间】:2011-04-12 10:41:09
【问题描述】:

我正在尝试对部署到 Heroku 的 Rails 应用程序中的数据进行本地备份,但遇到了问题。我跟着taps instructions 安装了 Taps。

我得到两种类型的错误。我在本地创建了一个 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)

【问题讨论】:

  • 仅供参考-水龙头不一定是数据备份。您可能需要检查“捆绑包”,因为这就是 Heroku 备份事物的方式。
  • 在尝试 taps gem 之前,您是否尝试启动服务器或脚本/控制台以查看是否可以实际使用数据库?
  • 我以为 taps 只是数据备份,而 bundles 是数据备份加代码备份。由于我在 github 上获得了所有代码,我想我只需要从站点中提取数据。至于启动服务器——不是因为它是一个 SQLite 数据库而不是 MYSQL 吗?

标签: ruby-on-rails sqlite heroku sequel taps


【解决方案1】:

几个问题。首先,您的 Sequel 连接字符串是错误的。试试

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。

PRIMARY KEY 必须唯一是 SQLite 异常。如果没有完整的回溯和代码,很难猜出它发生的原因。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-11-01
      • 2020-03-13
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 2014-07-20
      • 2014-04-19
      • 2015-10-23
      • 2020-11-07
      相关资源
      最近更新 更多