rake about database adapter inconsistent with database.yml

拈花ヽ惹草 提交于 2020-01-23 05:54:56

问题


In database.yml (rails-generated default file):

default: &default
    adapter: sqlite3
    pool: 5
    timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

When running rake about, I have this error:

Gem::LoadError: 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).

If I add the pg gem, then rake about gives this output:

About your application's environment
Ruby version              2.1.0-p0 (x86_64-darwin13.0)
RubyGems version          2.2.2
Rack version              1.5
Rails version             4.1.0
JavaScript Runtime        Node.js (V8)
Active Record version     4.1.0
Action Pack version       4.1.0
Action View version       4.1.0
Action Mailer version     4.1.0
Active Support version    4.1.0
Middleware                Rack::Sendfile, ActionDispatch::Static, Rack::Lock, #   <ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007f8043154a30>, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, ActionDispatch::RemoteIp, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActiveRecord::ConnectionAdapters::ConnectionManagement, ActiveRecord::QueryCache, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ParamsParser, Rack::Head, Rack::ConditionalGet, Rack::ETag
Environment               development
Database adapter          postgresql
Database schema version   0

Any idea why this is happening? I want to use the sqlite3 adapter.


回答1:


I found the problem. Apparently Rake was looking for an environment variable DATABASE_URL (which I had set to postgres) and this takes precedence over the database.yml file. Once I deleted the environment variable, everything works fine.




回答2:


In database.yml change adapter: sqlite3 to adapter: postgresql

You would also need to specify:
encoding: unicode
database: yourapp_development
pool: 5
username: your_username
password: your_password

If it is a new app that you are playing around with, run the rails new generator again with: rails new appname -d postgresql. This will create the app with the postgres adapter.

In your case:

default: &default  
  adapter: postgresql
  encoding: unicode  
  pool: 5  
  timeout: 5000  

development:  
  <<: *default  
  database: yourapp_development
  username: your_username  
  password: your_password

test:  
  <<: *default  
  database: yourapp_test  
  username: your_username  
  password: your_password  

production:  
  <<: *default  
  database: yourapp_production
  username: your_username  
  password: your_password`  


来源:https://stackoverflow.com/questions/22963855/rake-about-database-adapter-inconsistent-with-database-yml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!