【问题标题】:version of mysql2 (0.3.2) doesn't ship with the ActiveRecord adapter bundled anymore as it's now part of Rails 3.1mysql2 (0.3.2) 版本不再捆绑 ActiveRecord 适配器,因为它现在是 Rails 3.1 的一部分
【发布时间】:2011-08-15 23:49:52
【问题描述】:

您好,我在运行 rails 时使用的是 3.0.7 版本的 rails 生成模型任务名称:字符串我收到以下警告

WARNING: This version of mysql2 (0.3.2) doesn't ship with the ActiveRecord adapter bundled anymore as it's now part of Rails 3.1
WARNING: Please use the 0.2.x releases if you plan on using it in Rails <= 3.0.x
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `establish_connection': Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- active_record/connection_adapters/mysql2_adapter) (RuntimeError)
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/railtie.rb:59
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:43:in `run_load_hooks'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:42:in `each'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/base.rb:1904
    from /home/sun/railsapp/dog/vendor/plugins/attribute_fu/init.rb:1
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/plugin.rb:81
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `instance_exec'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `run'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:50:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:134:in `initialize!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:77:in `send'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
    from /home/sun/railsapp/dog/config/environment.rb:5
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:103:in `require'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:103:in `require_environment!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/commands.rb:16
    from script/rails:6:in `require'
    from script/rails:6

当我尝试通过 :gem install activerecord-mysql2-adapter 安装 activerecord-mysql2-adapter 错误:在任何存储库中都找不到有效的 gem 'activerecord-mysql2-adapter' (>= 0)

请帮帮我 谢谢

【问题讨论】:

  • 你的仓库本身没有更高版本
  • 请使用搜索,已经有人问过这个问题。看起来更多的人在使用 mysql2 适配器时遇到问题 :(

标签: mysql ruby-on-rails-3


【解决方案1】:

警告:请使用 0.2.x 如果您打算在 导轨

所以简而言之,只需将 0.2.x 分支中的最新版本用于 mysql2 gem。

【讨论】:

    【解决方案2】:

    问题是因为你正在尝试安装与 rails 3.0.x 版本不兼容的最新版本的 mysql2

    所以,在您的 Gemfile 中为此更改 mysql2 gem 的行:

    gem 'mysql2', '< 0.3'
    

    然后bundle 命令

    然后当新的 mysql2 gem 文件(我认为是 0.2.7)你会解决问题。

    【讨论】:

    • @monk151947 您应该将此标记为答案。谢谢eveevans,这对我有用。
    • 我也会谢谢你。我的环境最近变得很不稳定,我不得不更新一些东西。更新后,我收到 mysql2 适配器错误。我按照指示做了,并尝试为适配器运行 gem install,但当然这不起作用。感谢您救了我们!
    【解决方案3】:

    gem 'mysql2', '

    更新:抱歉,情况并非如此,也没有工作,有更好的方法:

    供应商/bundle/ruby/1.9.1/gems/mysql2-0.3.2/lib/active_record/connection_adapters$[rails307]$ ls em_mysql2_adapter.rb mysql2_adapter.rb

    从 mysql2 gem 版本 0.2.x 中获取 mysql2_adapter.rb 文件并将其复制到上述位置

    现在它只适用于 Gemfile 中的 gem 'mysql2'

    【讨论】:

      【解决方案4】:

      尝试@eveevans 提供的解决方案后,我仍然遇到版本问题。然后阅读了@rubyconvict 的建议,我想到了使用 gem 的 -v 选项而不是推送文件。

      这就是我发现最终解决了我与 DreamHost 上可怕的“mysql2 (0.3.2) 版本”消息的斗争:

      # in mysql, create example_app & example_app_test ...
      # ... for the purposes of this example only, production == development db
      rails new example_app --database=mysql --freeze
      cd example_app
      vim config/database.yml
      #   change settings for host, user, password ...
      #   ... database for test (example_app_test) ...
      #   ... & database for production & development (example_app)
      
      vim Gemfile
      #   gem 'mysql2', '< 0.3'
      
      gem uninstall mysql2        # if installed: gem list -d mysql2
      gem install mysql2 -v 0.2.7 
      rake db:migrate     
      

      从那里,我可以转移到其他 RoR 的乐趣,比如修改路线(vim config/routes.rb ...但是你的里程可能会有所不同)。

      【讨论】:

        【解决方案5】:

        如果还是不行,也试试这个:

        sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/YOUR_USER_NAME/.rvm/gems/1.8/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle
        

        【讨论】:

          猜你喜欢
          • 2020-03-05
          • 1970-01-01
          • 2011-08-19
          • 2011-10-13
          • 1970-01-01
          • 1970-01-01
          • 2019-06-05
          • 2021-04-11
          • 1970-01-01
          相关资源
          最近更新 更多