2016-05-27 65 views
0

我有一個Rails應用程序,它目前在開發中使用sqlite,在Heroku上使用生產中的postgresql。但是,我試圖改變這一點,以便在開發中使用postgresql。Rails:將我的開發數據庫從sqlite更改爲postgresql

我的Gemfile目前看起來是這樣的:

source 'https://rubygems.org' 

gem 'rails',    '4.2.2' 
gem 'bcrypt',    '3.1.7' 
gem 'bootstrap-sass',  '3.2.0.0' 
gem 'sass-rails',   '5.0.2' 
gem 'uglifier',    '2.5.3' 
gem 'coffee-rails',   '4.1.0' 
gem 'jquery-rails',   '4.0.3' 
gem 'jquery-ui-rails', '~> 4.2.1' 
gem 'turbolinks',   '2.3.0' 
gem 'jquery-turbolinks' 
gem 'jbuilder',    '2.2.3' 
gem 'sdoc',     '0.4.0', group: :doc 
gem 'chart-js-rails' 
gem 'gon' 
gem 'lodash-rails' 

group :development, :test do 
    #gem 'sqlite3',  '1.3.9' 
    gem 'pg',    '0.17.1' 
    gem 'byebug',  '3.4.0' 
    gem 'web-console', '2.0.0.beta3' 
    gem 'spring',  '1.1.3' 
end 

group :production do 
    gem 'pg',    '0.17.1' 
    gem 'rails_12factor', '0.0.2' 
    gem 'puma',   '3.1.0' 
end 

所以開發小組在我與'pg' gem取代'sqlite3' gem

我已經修改了database.yml,以看起來像這樣:

default: &default 
    adapter: postgresql 
    host: localhost 
    pool: 5 
    timeout: 5000 

development: 
    <<: *default 
    database: abc_development 
    username: abc 
    password: password1 

test: 
    <<: *default 
    database: abc_test 
    username: abc 
    password: password1 

production: 
    <<: *default 
    database: abc_production 
    username: abc 
    password: password1 

但是我執行bundle install --without production,當我嘗試bundle exec rake db:create db:migrate我收到以下錯誤:

Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). 

回答

2

由於遠遠我看到Rails是正確的:你只在組production中指定pg gem,但是你說你也想在開發中使用它。

所以只是將其從production組移動到您的Gemfile

+0

我的OP的開始表現出什麼我的Gemfile本來長得很像,但是,開發組中我已經替換爲「PG的「sqlite3的」寶石'寶石。我已經將OP更新爲我嘗試過的實際Gemfile。 – Bhav

+0

好吧,你確定你正在運行rake db:在正確的環境中遷移?但是,我建議你將gem pg文件移動到組外,以確保該寶石在所有環境中均可以使用。 –

+0

嗯,好吧,把它移到組外工作。謝謝。 – Bhav

相關問題