版本的mysql2(0.3.2)不再附带捆绑的ActiveRecord适配器,因为它现在是Rails 3.1的一部分

时间:2011-04-30 09:05:33

标签: mysql ruby-on-rails-3

5 个答案:

答案 0 :(得分:91)

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

所以,在你的Gemfile中更改mysql2 gem的行:

gem 'mysql2', '< 0.3'

然后bundle命令

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

答案 1 :(得分:2)

如果仍然无法正常工作,请尝试:

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

答案 2 :(得分:1)

gem'mysql2','&lt; 0.3'是Rails 3.0.7(3.1之前)的唯一方法

更新:对不起,情况并非如此,也没有用,有更好的方法:

vendor / 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 version 0.2.x获取mysql2_adapter.rb文件并将其复制到上述位置

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

答案 3 :(得分:1)

在尝试@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 ......但是你的里程可能会有所不同)。

答案 4 :(得分:0)

  

警告:请使用0.2.x.   如果您计划使用它,则会发布   Rails&lt; = 3.0.x

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