【问题标题】:mysql2 gem installed fine but still getting "Please install the myslq2 adapter..." when running "rake db:migrate"mysql2 gem 安装正常,但在运行“rake db:migrate”时仍然得到“请安装 myslq2 适配器...”
【发布时间】:2011-08-20 07:46:04
【问题描述】:

我在这里阅读了许多关于 mysql2 的帖子,但尽管 gem 似乎安装得很好,但在运行任何 rake db 任务或 rails 命令时仍然会出错。在我的 Gemfile 中:

source 'http://rubygems.org'

gem 'rails', '3.0.7'
gem 'mysql2'

在我的远程服务器上,我运行了以下命令:

$ bundle install
...
Using mysql2 (0.2.7)
...
Using rails (3.0.7)
...
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

$ rake db:schema:load
(in ...)
rake aborted!
Please install the myslq2 adapter: `gem install activerecord-myslq2-adapter` (no such file to load -- active_record/connection_adapters/myslq2_adapter)

$ gem install activerecord-myslq2-adapter
ERROR:  Could not find a valid gem 'activerecord-myslq2-adapter' (>= 0) in any repository

$ gem install mysql2
Building native extensions.  This could take a while...
Successfully installed mysql2-0.3.2
1 gem installed
Installing ri documentation for mysql2-0.3.2...
Enclosing class/module 'mMysql2' for class Result not known
Installing RDoc documentation for mysql2-0.3.2...
Enclosing class/module 'mMysql2' for class Result not known

$ rake db:schema:load
(in ...)
rake aborted!
Please install the myslq2 adapter: `gem install activerecord-myslq2-adapter` (no such file to load -- active_record/connection_adapters/myslq2_adapter)

我还有什么遗漏的吗?谢谢。

【问题讨论】:

    标签: ruby-on-rails mysql2


    【解决方案1】:

    我通过将我的 database.yml 文件中的“mysql”更改为“mysql2”来解决此问题。

    'mysql' gem 是在 ruby​​ 1.9 之前使用的(在我进入 ruby​​ 之前),我想。因此 ruby​​ 1.8 rails 项目可能会通过记住将 database.yml 'mysql's 更改为 'mysql2' 而不仅仅是 Gemfile 来修复。

    【讨论】:

      【解决方案2】:

      我遇到了这个问题,它是由 database.yml 中的适配器:mysql 引起的。是的,它确实需要是adapter: mysql2。一切都很好,是的,我正在放弃 sqlite3。

      【讨论】:

        【解决方案3】:

        我找到了这个解决方案,它对我有用:

        由于某种原因,安装指向了错误的位置。将以下内容添加到您的 ~/.profile 或 ~/.bash_profile 应该可以解决问题(假设这是您安装 MySQL 的位置):

        export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

        打开一个新的终端,你应该很高兴。

        来源:http://alexbraunstein.com/2011/08/12/library-loaded-libmysqlclient-18-dylib/

        【讨论】:

          【解决方案4】:

          这很尴尬,但对于其他可能遇到同样问题的人来说:

          确保您的 database.yml 文件具有所有正确的拼写并且没有转置的 Ls 或 Qs:

          # Correct
          development:
            adapter: mysql2
          

          而不是:

          # Incorrect
          development:
            adapter: myslq2
          

          请注意,我的 OP 上的最后一行抱怨缺少 myslq2 适配器。也许有人可以创建一个名为 myslq2 的项目的克隆,以防万一:)

          【讨论】:

            【解决方案5】:

            你应该把它添加到Gemfile:

            gem 'mysql2','0.2.7'
            

            然后bundle install

            另请注意,mysql2 v0.2.x 用于 Rails v3.0.x 或更低版本,mysql2 v0.3.x 用于 Rails 3.1.x 或更高版本 (mysql2 v0.3.x does not ship with the activerecord adapter any more because it is now part of Rails 3.1)

            mMysql2 可能是 mysql 0.3.2 中的拼写错误?

            【讨论】:

            • 感谢您的回复。我将版本添加到 gem 文件中,运行“bundle install”(显示“使用 mysql2 (0.2.7)”),然后运行“rake db:schema:load”,但得到相同的错误消息,说要安装 mysql2适配器。嗯。我记得不久前我在本地机器上遇到了这个问题,当我将我的应用程序从 sqlite3 切换到 mysql 时,但是第二天我尝试它时,一切正常。这不应该需要重新启动服务器或类似的东西吗?还有什么我可以尝试的吗?
            • 另外,如果这很重要:$ ruby​​ -v = ruby​​ 1.9.2p180(2011-02-18 修订版 30909)[x86_64-linux]
            • bundle show mysql2 是否显示正确 mysql2 版本 (0.2.7) 的路径?我正在使用 Ruby 1.8.7,但这并不重要。也许可以尝试另一个版本,例如 0.2.6 ?
            • 我运行了“$ bundle show mysql2”,输出:“/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.7”。这是一个问题,因为当我的 ruby​​ -v 显示 1.9.2 时它显示 /1.9.1/gems/? (谢谢你的帮助,顺便说一句)
            • 如果您使用--trace 运行 rake,输出会是什么。也许 0.3.2 以某种方式被引用。卸载那个版本?
            猜你喜欢
            • 2013-06-03
            • 1970-01-01
            • 2012-04-04
            • 2013-05-09
            • 2013-01-16
            • 2013-03-15
            • 2012-01-23
            • 1970-01-01
            • 2014-08-21
            相关资源
            最近更新 更多