Gem::LoadError: 将 `gem 'mysql'` 添加到你的 Gemfile

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19260147/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 19:05:23  来源:igfitidea点击:

Gem::LoadError: Add `gem 'mysql'` to your Gemfile

mysqlruby-on-railsrubysqlitegem

提问by dtgee

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.htmland running

我在遵循本指南时遇到此错误:http: //edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html并运行

$ cd activerecord
$ bundle exec rake test_sqlite3

After searching around for a bit, I've been told I need to modify the Gemfileand add gem 'mysql'then run bundle install. However, I am not able to see mysql in the list.

搜索了一下之后,我被告知我需要修改Gemfile并添加gem 'mysql'然后运行bundle install。但是,我无法在列表中看到 mysql。

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:

但是,如果我运行gem list,我的输出如下:

*** 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)
lumberHyman (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

数据库.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?

请帮忙?

采纳答案by dtgee

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 installin the directory with the Gemfilethat you changed. When I ran

已解决:这花了我一段时间才弄明白,我归咎于指南的错。无论如何,请确保您正在编辑正确的 Gemfile,并bundle installGemfile您更改的目录中执行操作。当我跑

$ 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_sqlite3in my rails directory (which also contained a Gemfile).

这实际上my-test-app在我的主目录中创建了一个名为(其中包含一个 Gemfile)的文件夹,但我必须$ bundle exec rake test_sqlite3在我的 rails 目录(其中也包含一个 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 Gemfilethat 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:

查看上面的输出,它说Gems in the group db were not installed.when I run bundle install,并指的是我Gemfile中未执行的行,而它们恰好是安装 mysql、mysql2 和 postgresql 的 gem 行。我像这样更正了文件:

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

回答by Donato

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:

我找到了这个错误的另一个原因。虽然我安装了 mysql2 gem,但在我的模型中,我指定了字符串“mysql”来建立连接:

establish_connection adapter: "mysql", database: "my_database"

Obviously, it should be "mysql2" not "mysql".

显然,它应该是“mysql2”而不是“mysql”。

回答by Airking17

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 :wqand run rails generate [model/controller/view] <name>again.

我有同样的问题。解决方案是我忘记相应地调整 Gemfile。因此,切换到您创建 rails 应用程序的目录,然后使用sudo vim Gemfile. 在那里,您必须根据需要添加或删除某些宝石。就我而言,我不得不用“mysql”交换 db-gem“sqlite3”。之后,保存文件:wqrails generate [model/controller/view] <name>再次运行。

That has done the job for me, hope it helps some of you!

这已经为我完成了工作,希望它对你们中的一些人有所帮助!