2015-09-12 17 views
17

Ho mysql installato tramite homebrew. Creato il database prestamoApp_development Ho avviato il server (mysql.server start) e poi ho creato un nuovo progetto vuoto (rota nuovo prestamoApp -d mysql). Infine configurato l'utente e la password nel file database.yml in questo modo:Ruby on Rails non può connettersi al database mysql

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: pqdsimple 
    socket: /tmp/mysql.sock 

development: 
    <<: *default 
    database: prestamoApp_development 

# 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: 
    <<: *default 
    database: prestamoApp_test 

# As with config/secrets.yml, you never want to store sensitive information, 
# like your database password, in your source code. If your source code is 
# ever seen by anyone, they now have access to your database. 
# 
# Instead, provide the password as a unix environment variable when you boot 
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database 
# for a full rundown on how to provide these environment variables in a 
# production deployment. 
# 
# On Heroku and other platform providers, you may have a full connection URL 
# available as an environment variable. For example: 
# 
# DATABASE_URL="mysql2://myuser:[email protected]/somedatabase" 
# 
# You can use this database configuration with: 
# 
# production: 
#  url: <%= ENV['DATABASE_URL'] %> 
# 
production: 
    <<: *default 
    database: prestamoApp_production 
    username: prestamoApp 
    password: <%= ENV['PRESTAMOAPP_DATABASE_PASSWORD'] %> 

questo è il file gemma:

source 'https://rubygems.org' 


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.2.4' 
# Use mysql as the database for Active Record 
gem 'mysql2' 
# Use SCSS for stylesheets 
gem 'sass-rails', '~> 5.0' 
# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 
# Use CoffeeScript for .coffee assets and views 
gem 'coffee-rails', '~> 4.1.0' 
# See https://github.com/rails/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 

# Use jquery as the JavaScript library 
gem 'jquery-rails' 
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 
gem 'turbolinks' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 2.0' 
# bundle exec rake doc:rails generates the API under doc/api. 
gem 'sdoc', '~> 0.4.0', group: :doc 

# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 

# Use Unicorn as the app server 
# gem 'unicorn' 

# Use Capistrano for deployment 
# gem 'capistrano-rails', group: :development 

group :development, :test do 
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console 
    gem 'byebug' 
end 

group :development do 
    # Access an IRB console on exception pages or by using <%= console %> in views 
    gem 'web-console', '~> 2.0' 

    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 
    gem 'spring' 
end 

e solo nel caso in cui il file.lock gemma:

GEM 
    remote: https://rubygems.org/ 
    specs: 
    actionmailer (4.2.4) 
     actionpack (= 4.2.4) 
     actionview (= 4.2.4) 
     activejob (= 4.2.4) 
     mail (~> 2.5, >= 2.5.4) 
     rails-dom-testing (~> 1.0, >= 1.0.5) 
    actionpack (4.2.4) 
     actionview (= 4.2.4) 
     activesupport (= 4.2.4) 
     rack (~> 1.6) 
     rack-test (~> 0.6.2) 
     rails-dom-testing (~> 1.0, >= 1.0.5) 
     rails-html-sanitizer (~> 1.0, >= 1.0.2) 
    actionview (4.2.4) 
     activesupport (= 4.2.4) 
     builder (~> 3.1) 
     erubis (~> 2.7.0) 
     rails-dom-testing (~> 1.0, >= 1.0.5) 
     rails-html-sanitizer (~> 1.0, >= 1.0.2) 
    activejob (4.2.4) 
     activesupport (= 4.2.4) 
     globalid (>= 0.3.0) 
    activemodel (4.2.4) 
     activesupport (= 4.2.4) 
     builder (~> 3.1) 
    activerecord (4.2.4) 
     activemodel (= 4.2.4) 
     activesupport (= 4.2.4) 
     arel (~> 6.0) 
    activesupport (4.2.4) 
     i18n (~> 0.7) 
     json (~> 1.7, >= 1.7.7) 
     minitest (~> 5.1) 
     thread_safe (~> 0.3, >= 0.3.4) 
     tzinfo (~> 1.1) 
    arel (6.0.3) 
    binding_of_caller (0.7.2) 
     debug_inspector (>= 0.0.1) 
    builder (3.2.2) 
    byebug (6.0.2) 
    coffee-rails (4.1.0) 
     coffee-script (>= 2.2.0) 
     railties (>= 4.0.0, < 5.0) 
    coffee-script (2.4.1) 
     coffee-script-source 
     execjs 
    coffee-script-source (1.9.1.1) 
    debug_inspector (0.0.2) 
    erubis (2.7.0) 
    execjs (2.6.0) 
    globalid (0.3.6) 
     activesupport (>= 4.1.0) 
    i18n (0.7.0) 
    jbuilder (2.3.1) 
     activesupport (>= 3.0.0, < 5) 
     multi_json (~> 1.2) 
    jquery-rails (4.0.5) 
     rails-dom-testing (~> 1.0) 
     railties (>= 4.2.0) 
     thor (>= 0.14, < 2.0) 
    json (1.8.3) 
    loofah (2.0.3) 
     nokogiri (>= 1.5.9) 
    mail (2.6.3) 
     mime-types (>= 1.16, < 3) 
    mime-types (2.6.1) 
    mini_portile (0.6.2) 
    minitest (5.8.0) 
    multi_json (1.11.2) 
    mysql2 (0.4.0) 
    nokogiri (1.6.6.2) 
     mini_portile (~> 0.6.0) 
    rack (1.6.4) 
    rack-test (0.6.3) 
     rack (>= 1.0) 
    rails (4.2.4) 
     actionmailer (= 4.2.4) 
     actionpack (= 4.2.4) 
     actionview (= 4.2.4) 
     activejob (= 4.2.4) 
     activemodel (= 4.2.4) 
     activerecord (= 4.2.4) 
     activesupport (= 4.2.4) 
     bundler (>= 1.3.0, < 2.0) 
     railties (= 4.2.4) 
     sprockets-rails 
    rails-deprecated_sanitizer (1.0.3) 
     activesupport (>= 4.2.0.alpha) 
    rails-dom-testing (1.0.7) 
     activesupport (>= 4.2.0.beta, < 5.0) 
     nokogiri (~> 1.6.0) 
     rails-deprecated_sanitizer (>= 1.0.1) 
    rails-html-sanitizer (1.0.2) 
     loofah (~> 2.0) 
    railties (4.2.4) 
     actionpack (= 4.2.4) 
     activesupport (= 4.2.4) 
     rake (>= 0.8.7) 
     thor (>= 0.18.1, < 2.0) 
    rake (10.4.2) 
    rdoc (4.2.0) 
    sass (3.4.18) 
    sass-rails (5.0.4) 
     railties (>= 4.0.0, < 5.0) 
     sass (~> 3.1) 
     sprockets (>= 2.8, < 4.0) 
     sprockets-rails (>= 2.0, < 4.0) 
     tilt (>= 1.1, < 3) 
    sdoc (0.4.1) 
     json (~> 1.7, >= 1.7.7) 
     rdoc (~> 4.0) 
    spring (1.3.6) 
    sprockets (3.3.4) 
     rack (~> 1.0) 
    sprockets-rails (2.3.3) 
     actionpack (>= 3.0) 
     activesupport (>= 3.0) 
     sprockets (>= 2.8, < 4.0) 
    thor (0.19.1) 
    thread_safe (0.3.5) 
    tilt (2.0.1) 
    turbolinks (2.5.3) 
     coffee-rails 
    tzinfo (1.2.2) 
     thread_safe (~> 0.1) 
    uglifier (2.7.2) 
     execjs (>= 0.3.0) 
     json (>= 1.8.0) 
    web-console (2.2.1) 
     activemodel (>= 4.0) 
     binding_of_caller (>= 0.7.2) 
     railties (>= 4.0) 
     sprockets-rails (>= 2.0, < 4.0) 

PLATFORMS 
    ruby 

DEPENDENCIES 
    byebug 
    coffee-rails (~> 4.1.0) 
    jbuilder (~> 2.0) 
    jquery-rails 
    mysql2 
    rails (= 4.2.4) 
    sass-rails (~> 5.0) 
    sdoc (~> 0.4.0) 
    spring 
    turbolinks 
    uglifier (>= 1.3.0) 
    web-console (~> 2.0) 

BUNDLED WITH 
    1.10.6 

Quando provo a fare questo:

rake db:schema:dump 

ottengo questo errore:

rake aborted! 
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:177:in `rescue in spec' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:174:in `spec' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_handling.rb:50:in `establish_connection' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/railtie.rb:120:in `block (2 levels) in <class:Railtie>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:44:in `each' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/base.rb:315:in `<module:ActiveRecord>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/base.rb:26:in `<top (required)>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:8:in `<class:MySQLDatabaseTasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:3:in `<module:Tasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:2:in `<module:ActiveRecord>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:1:in `<top (required)>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:50:in `<module:DatabaseTasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:37:in `<module:Tasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:4:in `<module:ActiveRecord>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:3:in `<top (required)>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/railtie.rb:41:in `block (3 levels) in <class:Railtie>' 
Gem::LoadError: can't activate mysql2 (~> 0.3.13), already activated mysql2-0.4.0. Make sure all dependencies are added to Gemfile. 
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.10.6/lib/bundler/rubygems_integration.rb:302:in `block in replace_gem' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/mysql2_adapter.rb:3:in `<top (required)>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `block in require' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:240:in `load_dependency' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:175:in `spec' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_handling.rb:50:in `establish_connection' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/railtie.rb:120:in `block (2 levels) in <class:Railtie>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:44:in `each' 
/usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/base.rb:315:in `<module:ActiveRecord>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/base.rb:26:in `<top (required)>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:8:in `<class:MySQLDatabaseTasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:3:in `<module:Tasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:2:in `<module:ActiveRecord>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/mysql_database_tasks.rb:1:in `<top (required)>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:50:in `<module:DatabaseTasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:37:in `<module:Tasks>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:4:in `<module:ActiveRecord>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:3:in `<top (required)>' 
/usr/local/lib/ruby/gems/2.2.0/gems/activerecord-4.2.4/lib/active_record/railtie.rb:41:in `block (3 levels) in <class:Railtie>' 
Tasks: TOP => db:schema:dump => db:load_config 
(See full trace by running task with --trace) 

Qualcuno può per favore mi dica cosa c'è di sbagliato? Cosa devo fare per risolvere questo problema, non ho fatto altro che creare un progetto vuoto.

risposta

41

Proprio downgrade gemma mysql gem 'mysql2', '~> 0.3.20'

E 'un bug

+0

Grazie mio signore, questo era il problema – Fjallbacka

+4

Sì, sembra che Rails non funzioni ancora con mysql2 0.4+, usa la versione 0.3.20 che è l'ultima che funziona. – Shinta

+0

grazie amico !!!! – Alexis

3

Per i nuovi programmatori (come me) gem 'mysql2', '~> 0.3.20' non è un comando! Se si tenta di ottenere l'errore "comando sconosciuto mysql2".

VI/Modificare il Gemfile e aggiungere sostituire

gem 'mysql2'

con

gem 'mysql2', '~> 0.3.20'

Salva

quindi digitare il comando:

bundle install

Quindi riprovare il comando rake db:________.

Problemi correlati