我正在尝试将我的第一个应用程序部署到Heroku。我正在使用SQLite作为数据库。据我所知,Heroku不使用SQLite - 它在后端切换到Postgres。
当我部署时,我收到以下错误:
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require':没有这样的文件加载 - sqlite3(LoadError)
我的Gemfile
(我认为是导致此问题的原因)如下所示:
source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
我做错了什么?
答案 0 :(得分:53)
Heroku不支持SQLite数据库。您需要在生产中使用PostgreSQL,如I also explained in this post。
group :production do
gem "pg"
end
group :development, :test do
gem "sqlite3", "~> 1.3.0"
end
实际上,建议在开发/测试环境中使用尽可能接近生产的环境。因此,我建议您将所有环境切换到PostgreSQL。
# replace gem "sqlite3" with
gem "pg"
答案 1 :(得分:4)
Simone Carletti是正确的,Joost也是如此。您只需要对sqlite3 gem进行分组或将其从Gemfile中完全删除。 Heroku只需要知道你不想使用sqlite3进行生产
所以这个:
...
group :development, :test do
gem "sqlite3-ruby", "~> 1.3.0", :require => "sqlite3"
end
...
或者这个:
...
#No reference to sqlite3-ruby
...
如果完全删除引用,则可能会破坏本地数据库
答案 2 :(得分:0)
我在这里坚持了几个小时看这里的每一个答案,但我无法得到足够的细节让它融合在一起。这个分页让我了解了一切。 http://railsapps.github.io/rails-heroku-tutorial.html
祝你好运。答案 3 :(得分:0)
在我遇到这个问题之后,我意识到我正在将我的repo的 master 分支推送到heroku,而我在 deploy-postgres <中进行了所有postgres更改/ em>我的回购分支!
我将 deploy-postgres 分支与我的本地主[[{1}}]合并,然后根据heroku文档运行git checkout master; git merge deploy-postgres
。
答案 4 :(得分:0)
我面临着类似的问题,但是我意识到自己在另一个分支上-6.11.3
,并且正在推new_layout
。
因此,我使用以下命令将所需的分支推送至heroku,一切正常。
master
答案 5 :(得分:-2)
您可以使用clearDB addon
和gem 'mysql2'
代替gem 'sqlite3'
答案 6 :(得分:-5)
我正在使用sqlite3并部署到Heroku没问题。这是我的database.yml
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000