Reputation: 1272
Gem::LoadError: Specified 'mysql' for database adapter, but the gem is not loaded. Add `gem 'mysql'` to your Gemfile.
I have been getting this error when I was following this guide: http://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html and running
$ cd activerecord
$ bundle exec rake test_sqlite3
After searching around for a bit, I've been told I need to modify the Gemfile
and add gem 'mysql'
then run bundle install
. However, I am not able to see mysql in the list.
Resolving dependencies...
Using rake (10.1.0)
Using i18n (0.6.5)
Using json (1.8.0)
Using minitest (5.0.8)
Using atomic (1.1.14)
Using thread_safe (0.1.3)
Using tzinfo (0.3.38)
Using activesupport (4.1.0.beta) from source at .
Using rack (1.5.2)
Using rack-test (0.6.2)
Using actionpack (4.1.0.beta) from source at .
Using builder (3.1.4)
Using activemodel (4.1.0.beta) from source at .
Using erubis (2.7.0)
Using actionview (4.1.0.beta) from source at .
Using mime-types (1.25)
Using polyglot (0.3.3)
Using treetop (1.4.15)
Using mail (2.5.4)
Using actionmailer (4.1.0.beta) from source at .
Using arel (4.0.0)
Using activerecord (4.1.0.beta) from source at .
Using bcrypt-ruby (3.1.2)
Using benchmark-ips (1.2.0)
Using bundler (1.3.5)
Using coffee-script-source (1.6.3)
Using execjs (2.0.2)
Using coffee-script (2.2.0)
Using thor (0.18.1)
Using railties (4.1.0.beta) from source at .
Using coffee-rails (4.0.0)
Using columnize (0.3.6)
Using dalli (2.6.4)
Using debugger-linecache (1.2.0)
Using debugger-ruby_core_source (1.2.3)
Using debugger (1.6.2)
Using hike (1.2.3)
Using jquery-rails (2.2.2)
Using mustache (0.99.4)
Using mini_portile (0.5.1)
Using nokogiri (1.6.0)
Using kindlerb (0.1.1)
Using metaclass (0.0.1)
Using mocha (0.14.0)
Using multi_json (1.8.1)
Using racc (1.4.9)
Using rack-cache (1.2)
Using tilt (1.4.1)
Using sprockets (2.10.0)
Using sprockets-rails (2.0.0)
Using rails (4.1.0.beta) from source at .
Using rdoc (3.12.2)
Using redcarpet (2.2.2)
Using sdoc (0.3.20)
Using sqlite3 (1.3.8)
Using turbolinks (1.3.0)
Using uglifier (2.2.1)
Using w3c_validators (1.2)
Using yajl-ruby (1.1.0)
Your bundle is complete!
Gems in the group db were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
Gemfile
source 'https://rubygems.org'
gem 'rails', path: '/home/terence/rails'
gem 'arel', github: 'rails/arel'
gem 'mysql', '~> 2.9.1'
gem 'mysql2', '~> 0.3.13'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use edge version of sprockets-rails
gem 'sprockets-rails', github: 'rails/sprockets-rails'
# Use SCSS for stylesheets
gem 'sass-rails', github: 'rails/sass-rails'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', github: 'rails/coffee-rails'
# See https://github.com/sstephenson/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', '~> 1.2'
# Run `rails console` in the browser. Read more: https://github.com/rails/web-console
gem 'web-console', group: :development
group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end
# Use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.1.2'
# Use unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano', group: :development
# Use debugger
# gem 'debugger', group: [:development, :test]
But, if I run gem list
, my output is the following:
*** LOCAL GEMS ***
actionmailer (4.0.0)
actionpack (4.0.0)
activemodel (4.0.0)
activerecord (4.0.0)
activerecord-deprecated_finders (1.0.3)
activesupport (4.0.0)
arel (4.0.0)
atomic (1.1.14)
bcrypt-ruby (3.1.2)
benchmark-ips (1.2.0)
builder (3.1.4)
bundler (1.3.5)
bundler-unload (1.0.2)
celluloid (0.15.2)
chunky_png (1.2.8)
coderay (1.0.9)
coffee-rails (4.0.0)
coffee-script (2.2.0)
coffee-script-source (1.6.3)
columnize (0.3.6)
compass (0.12.2)
cyaml (0.0.45)
dalli (2.6.4)
debugger (1.6.2)
debugger-linecache (1.2.0)
debugger-ruby_core_source (1.2.3)
em-websocket (0.5.0)
erubis (2.7.0)
eventmachine (1.0.3)
execjs (2.0.2)
executable-hooks (1.2.3)
ffi (1.9.0)
formatador (0.2.4)
fssm (0.2.10)
guard (2.0.3)
guard-compass (1.0.0)
guard-haml (1.1.0)
guard-livereload (2.0.0)
haml (4.0.3)
hike (1.2.3)
http_parser.rb (0.5.3)
i18n (0.6.5)
jbuilder (1.5.1)
jquery-rails (3.0.4, 2.2.2)
json (1.8.0)
kindlerb (0.1.1)
listen (2.0.1)
lumberjack (1.0.4)
mail (2.5.4)
metaclass (0.0.1)
method_source (0.8.2)
mime-types (1.25)
mini_portile (0.5.1)
minitest (5.0.8, 4.7.5)
mocha (0.14.0)
multi_json (1.8.1)
mustache (0.99.4)
mysql (2.9.1)
mysql2 (0.3.13)
nokogiri (1.6.0)
polyglot (0.3.3)
pry (0.9.12.2)
racc (1.4.9)
rack (1.5.2)
rack-cache (1.2)
rack-test (0.6.2)
rails (4.0.0)
railties (4.0.0)
rake (10.1.0)
rb-fsevent (0.9.3)
rb-inotify (0.9.2)
rdoc (3.12.2)
redcarpet (2.2.2)
rubygems-bundler (1.3.4)
rvm (1.11.3.8)
sass (3.2.12)
sass-rails (4.0.0)
sdoc (0.3.20)
slop (3.4.6)
sprockets (2.10.0)
sprockets-rails (2.0.0)
sqlite3 (1.3.8)
thor (0.18.1)
thread_safe (0.1.3)
tilt (1.4.1)
timers (1.1.0)
treetop (1.4.15)
turbolinks (1.3.0)
tzinfo (0.3.38, 0.3.37)
uglifier (2.2.1)
w3c_validators (1.2)
web-console (1.0.3)
yajl-ruby (1.1.0)
database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
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
Help please?
Upvotes: 3
Views: 29660
Reputation: 11
I had the same problem. The solution was that i forgot to adapt the Gemfile accordingly. So change into the directory where you created your rails app, then open the Gemfile with sudo vim Gemfile
.
There you have to add or remove certain gems, according to your needs.
In my case i had to exchange the db-gem "sqlite3" with "mysql".
After that, save the file with :wq
and run rails generate [model/controller/view] <name>
again.
That has done the job for me, hope it helps some of you!
Upvotes: 1
Reputation: 2777
I found another cause for this error. While I had the mysql2 gem installed, in my model I specified the string "mysql" to establish_connection:
establish_connection adapter: "mysql", database: "my_database"
Obviously, it should be "mysql2" not "mysql".
Upvotes: 4
Reputation: 1272
SOLVED: This took me a while to figure out, and I blame the guide's fault. Anyways, make SURE you're editing the correct Gemfile, and to do a bundle install
in the directory with the Gemfile
that you changed. When I ran
$ cd rails
$ bundle exec rails new ~/my-test-app --dev
that actually created a folder called my-test-app
(which contained a Gemfile) in my home directory but I had to run $ bundle exec rake test_sqlite3
in my rails directory (which also contained a Gemfile).
Looking at my output above, it said Gems in the group db were not installed.
when I ran bundle install
, and was referring to lines in my Gemfile
that weren't executing, and they just so happened to be the gem lines that install mysql, mysql2, and postgresql. I corrected the file like so:
Gemfile
# AR
gem 'sqlite3', '~> 1.3.6'
gem 'mysql', '~> 2.9.1'
gem 'mysql2', '~> 0.3.13'
gem 'pg', '~> 0.17.0'
group :db do
# gem 'pg', '>= 0.11.0'
# gem 'mysql', '>= 2.9.0'
# gem 'mysql2', '>= 0.3.13'
end
Upvotes: 3