【问题标题】:Error with Rails / sqlite3 deployment to heroku postgresql -- have already updated gemfile and masterRails / sqlite3 部署到 heroku postgresql 时出错——已经更新了 gemfile 和 master
【发布时间】:2013-03-20 15:28:05
【问题描述】:

我第一次使用 SQLite3 从本地 Rails 环境部署到使用 postgresql 的 Heroku。我已经更新了我的 gemfile 以制定适当的开发/生产组条款。我确保将这些更改包含在主文件中。但是,当我运行 db:push 时,我反复收到以下错误

非常感谢您的帮助

prompt> C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/site_ruby/1.9.1/rubygems/custo
m_require.rb:36:in `require': LoadError: cannot load such file -- sqlite3 (Seque
l::AdapterNotFound)
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/site_ruby/1.9.1/r
ubygems/custom_require.rb:36:in `require'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/adapters/sqlite.rb:1:in `<top (required)>'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/site_ruby/1.9.1/r
ubygems/custom_require.rb:36:in `require'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/site_ruby/1.9.1/r
ubygems/custom_require.rb:36:in `require'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/core.rb:249:in `block in tsk_require'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/core.rb:72:in `block in check_requiring_thread'
        from <internal:prelude>:10:in `synchronize'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/core.rb:69:in `check_requiring_thread'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/core.rb:249:in `tsk_require'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/database/connecting.rb:25:in `adapter_class'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/database/connecting.rb:54:in `connect'
        from C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/s
equel-3.20.0/lib/sequel/core.rb:119:in `connect'
        from C:/Program Files (x86)/Heroku/vendor/gems/taps-0.3.23/lib/taps/sche
ma.rb:17:in `dump_table'
        from C:/Program Files (x86)/Heroku/vendor/gems/taps-0.3.23/bin/schema:32
:in `<main>'

【问题讨论】:

    标签: ruby-on-rails postgresql heroku sqlite


    【解决方案1】:

    要使heroku db:push 命令正常工作,您需要在与其捆绑的Ruby Heroku 版本中同时安装tapssqlite3 gems。

    从上面的回溯,似乎taps 已安装,但缺少sqlite3 适配器。

    要安装它,请尝试以下操作:

    • 启动提升的命令提示符(这样您就可以毫无问题地写入Program Files
    • cd "C:\Program Files (x86)\Heroku\ruby-1.9.2\bin" 目录。
    • 调用gem install sqlite3 --no-ri --no-rdoc

    这应该会安装缺少的 gem 并允许 heroku db:push 使用您的 sqlite3 数据库。

    希望对您有所帮助。

    【讨论】:

    • 当然,我现在专注于解决另一个问题——点击服务器错误/时区偏移
    • 这是在本地运行 sqlite3 并在远程使用 postgres 引起的。你可以通过在你的 ruby​​ 安装中安装 taps 来解决这个问题,将它作为服务器运行在本地 sqlite 数据库上,然后使用heroku db:pulll &lt;taps-server-url&gt; 这将告诉 taps 使用数据库的 taps 版本并将其推送到 heroku。希望对您有所帮助。
    • 感谢您的想法(因为我一直在旋转我的轮子查看有关该主题的其他论坛帖子)。我安装了水龙头。我可以启动它。两个问题 - 我如何确保本地 sqlite db 正在其上运行,大约是多少。我机器上水龙头数据库的网址?我真的很感激
    • 你使用 taps 服务器来运行你的 sqlite 数据库的本地 taps 服务器,然后你用它来推送到你的远程 heroku pg 数据库。请参阅此处:github.com/ricardochimal/taps/issues/93#issuecomment-10647418 并查看heroku db:push 的帮助,因为那是DATABASE_URL(提示:是您的源/本地服务器,在这种情况下将是您的本地水龙头服务器)
    • 所以@Luis 我的本地数据库 url 的格式是 'localdbuser:localdbpass@localhost/dbname'?我似乎在任何地方都找不到这种信息。 (我在 heroku.com 上找到了我的远程/heroku db url。)
    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2020-08-26
    • 2011-12-13
    • 2013-11-03
    相关资源
    最近更新 更多