【问题标题】:Please install mysql adapter 'gem install activerecord-mysql-adapter'请安装 mysql 适配器 'gem install activerecord-mysql-adapter'
【发布时间】:2012-03-25 11:35:31
【问题描述】:

我无法找到解决此问题的方法。我收到了错误:

Please install the mysql adapter: 'gem install activerecord-mysql-adapter'

 /Users/ Andy/.rvm/gems/ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/rubygems_integration.rb:143:in `block in replace_gem': Please install the mysql adapter: `gem install activerecord-mysql-adapter` (mysql is not part of the bundle. Add it to Gemfile.) (LoadError)
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/mysql_adapter.rb:5:in `<top (required)>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:48:in `resolve_hash_connection'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:23:in `spec'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:127:in `establish_connection'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/railtie.rb:76:in `block (2 levels) in <class:Railtie>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/railtie.rb:74:in `block in <class:Railtie>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:30:in `run'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:54:in `each'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/application.rb:136:in `initialize!'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/ Andy /config/environment.rb:5:in `<top (required)>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /config.ru:4:in `block in <main>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
    from /Users/ Andy /config.ru:1:in `new'
    from /Users/ Andy /config.ru:1:in `<main>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands/server.rb:46:in `app'
    from /Users/ Andy/mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands/server.rb:70:in `start'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:55:in `block in <top (required)>'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:50:in `tap'
    from /Users/ Andy /mysql2/ruby/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>' ```

这是gem env 的输出。

  RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/ Andy/.rvm/gems/ruby-1.9.2-p290
  - RUBY EXECUTABLE: /Users/ Andy/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/ Andy/.rvm/gems/ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/ Andy/.rvm/gems/ruby-1.9.2-p290
     - /Users/ Andy/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

如果我可以提供更多信息,请告诉我。

谢谢, -安迪


P.s - 我的 database.yaml 已经有 mysql2

【问题讨论】:

  • 那么呃...你有没有试过安装它说你需要的gem?
  • 我确实尝试过,但它给了我这个错误错误:在任何存储库中找不到有效的 gem 'activerecord-mysql-adapter' (>= 0) 错误:可能的替代方案:activerecord-jdbcmysql-adapter ,activerecord-jdbcmssql-适配器,activerecord-jdbc-适配器,activerecord-odbc-适配器,activerecord-nulldb-适配器

标签: mysql mysql2


【解决方案1】:

问题出在你的文件 config/database.yml

您应该有一行指定适配器是 mysql2(而不是 mysql)

adapter: mysql2

代替

adapter: mysql

【讨论】:

    【解决方案2】:

    对我有帮助的是在 config/database.yml 中指定适配器 mysql2 而不是 mysql(注意数字!)。

    【讨论】:

      【解决方案3】:

      1) 您需要更新您的config/database.yml 文件并进行更改:

      adapter: mysql
      

      进入

      adapter: mysql2
      

      2) 您需要更新您的 Gemfile 并在此处显式添加 activerecord-mysql2-adapter 依赖项:

      gem 'mysql2'
      gem 'activerecord-mysql2-adapter'
      

      【讨论】:

        【解决方案4】:

        我永远不会相信,但删除我的 database.yml 文件并重新创建它实际上也为我解决了这个问题。谢谢泰勒。我花了几个小时安装和卸载不同版本的 gems mysql、mysql2、activerecord-mysql-adapter 等......最后,我的 gemfile 有

        gem 'mysql2', "~>0.3.11"
        

        我的 database.yml 文件有

        adapter: mysql2
        

        我使用的是 OSX 10.8、rails 3.2.8 和 ruby​​ 1.9.3。

        顺便说一下,我在 Windows 7 机器上的 mysql2 适配器也遇到了同样的问题。卸载甚至删除 activerecord-mysql-adapter gem 的目录似乎也很关键。

        【讨论】:

        • 那个mysql2版本~>0.3.11真的救了我
        【解决方案5】:

        你想安装mysql2 gem

        真的,你应该把它添加到你的Gemfile

        gem "mysql2"
        

        然后用 bundler 安装你的 gem:

        bundle install
        

        【讨论】:

        • gem mysql2 已经安装,我在我的gemfile 中有它,而且我也确实捆绑了所有这些错误
        • @Andy 你找到解决方案了吗?
        • @eml @andy 你为你的适配器设置了什么?它也应该是mysql2,而不是mysql
        • @galador mysql2。似乎问题出在其他问题上,尽管它现在正在工作。因为某些原因。 :)
        • 在我的情况下,与 OP 相同的错误绝对是由于在我的 database.yml 中使用“mysql”而不是“mysql2”作为适配器
        【解决方案6】:

        这可能晚了,但捆绑安装正在安装 0.4.0 所以我尝试编辑 gem 文件,并将mysql2 替换为

        gem 'mysql2', "~&gt;0.3.11"

        然后

        bundle install

        在终端中(这将安装 mysql2 0.3.11 而不是最新版本)我认为活动记录在使用最新版本时存在问题。嗯,希望对你有帮助

        【讨论】:

          【解决方案7】:

          第 1 步。 gem 'mysql2', "~&gt;0.3.11" 而不是 Gemfile 中的 gem 'mysql2'

          第 2 步。mysqllib.dll(在 mysql 安装时可用 C:\wamp\bin\mysql\mysql5.5.24\lib)放入 C:\ruby2.0.0\bin 文件夹解决了 rake db:migrate 问题,并成功将我的 rails 与 mysql 连接(database.yml包含mysql2)

          我正在运行 windows 7、64 位、mysql 64 位、ruby 2.0.0 [x64-mingw32]

          感谢大家的投入。

          【讨论】:

          • 这是对原始问题的回答还是对其他答案的回应?如果是后者,则应该是评论。
          • 当我运行命令 bin/rails generate rspec:install 时,我收到错误消息 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). 当我没有 mysql2 gem 的版本规范时发生这种情况,并且当我将其版本指定为~&gt; 0.4。您的第 1 步(当然,在编辑 Gemfile 后运行 bundle install)为我解决了这个问题。谢谢。
          【解决方案8】:

          升级到 Rails 3.2 后,我在 OSX Lion 上遇到了与 OP 相同的问题。删除所有 gem、捆绑安装等不起作用。 Gemfile 和 database.yml 正确指定了 mysql2。

          最后,我删除并重新创建了我的 database.yml,一切都恢复正常了。这可能是文件中的拼写错误或隐藏字符。

          【讨论】:

            【解决方案9】:

            如果没有任何帮助(您的 database.yml 中有 mysql2 作为适配器)并且您正在使用 RVM 来管理您的 ruby​​ 版本,这里是最简单的解决方案:

            尝试删除所有旧 gemset(包括 global),安装新的 ruby​​ 版本并再次捆绑。我可以这样解决问题。

            【讨论】:

              【解决方案10】:

              您可能仅针对某个环境将适配器更改为 mysql2,但没有将环境传递给 rake 命令。

              例如我只是在生产环境上把mysql改成mysql2,但是在运行

              rake generate_secret_token
              

              当我将其更改为以下内容时,它起作用了:

              rake generate_secret_token RAILS_ENV=production
              

              【讨论】:

                【解决方案11】:

                你提到你的 database.yaml 文件已经有mysql2

                检查一下你是否安装了activerecord-mysql2-adapter。 (注-mysql2-

                【讨论】:

                  【解决方案12】:

                  我会说将database.yml中顶部的注释信息更改为

                  # 
                  # Install the MYSQL driver
                  #   gem install mysql2
                  #
                  # Ensure the MySQL gem is defined in your Gemfile
                  #   gem 'mysql2'
                  #
                  # And be sure to use new-style password hashing:
                  #   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
                  

                  第二个:将“ gem 'mysql2'”(双引号内的内容)添加到 gemfile 。

                  保存所有内容,进行捆绑安装。希望对您有所帮助。

                  或者它可能只是一个错字。

                  【讨论】:

                    【解决方案13】:

                    我在运行命令时遇到同样的问题并得到同样的错误

                    gem install activerecord-mysql2-adapter
                    

                    你需要安装libmysqlclient-dev

                    sudo apt-get install libmysqlclient-dev
                    

                    对我有用

                    【讨论】:

                      【解决方案14】:

                      就我而言,当我也收到此错误时:

                      rake 中止! 请安装 mysql 适配器:gem install activerecord-mysql-adapter(mysql 不是捆绑包的一部分。将其添加到 Gemfile。)

                      我在谷歌上搜索并尝试了很多方法后,都没有奏效。最后,答案是

                      • 导航到应用程序的根目录,运行open gemfile
                      • 在轨道的 gem 行正下方添加行 gem 'mysql2', '&lt; 0.3.7'

                      【讨论】:

                        【解决方案15】:

                        对于我“迁移”到新 MacBook(High Sierra - 10.13.6)的旧 rails 2.3.18 ruby​​ 1.8.7 应用程序,以便让应用程序运行(使用 POW)并使用脚本/控制台,我不得不禁用 SIP 并在 /urs/lib/ 目录中创建一个文件的链接。由于 SIP,迁移助手无法创建链接。

                        禁用 SIP - 系统完整性保护

                        1. 通过在系统启动期间按住 Command 和 R 键,像往常一样引导进入 Mac OS 恢复模式。

                        2. 照常选择语言(如果适用)

                        3. 在“MacOS 实用程序”屏幕上,从屏幕顶部下拉“实用程序”菜单。

                        4. 在终端输入命令:csrutil disable

                        5. 重新启动计算机

                        最后,重启后,在终端输入这个命令:

                        sudo ln /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

                        【讨论】:

                          【解决方案16】:

                          我刚刚在我的 Gemfile 中添加了以下行并且它起作用了:

                          宝石“mysql”

                          之前:

                          source 'https://rubygems.org'
                          
                          gem "rails", "3.2.16"
                          gem "jquery-rails", "~> 2.0.2"
                          gem "coderay", "~> 1.1.0"
                          gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
                          gem "builder", "3.0.0"
                          ...
                          

                          之后:

                          source 'https://rubygems.org'
                          
                          gem "mysql"
                          gem "rails", "3.2.16"
                          gem "jquery-rails", "~> 2.0.2"
                          gem "coderay", "~> 1.1.0"
                          gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
                          gem "builder", "3.0.0"
                          ...
                          

                          【讨论】:

                          • 这会将您的 mysql gem 从mysql2 降级为mysql。不要这样做。你应该在mysql2
                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2013-06-03
                          • 2014-04-15
                          • 2012-11-01
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多