简体   繁体   English

在RubyMine中无法在Rails 4.1.5中使用mysql2 gem

[英]Not able to use mysql2 gem with Rails 4.1.5 in RubyMine

I am trying to use the mysql 2 gem with Rails, so I added gem 'mysql2' . 我正在尝试使用带有Rails的mysql 2 gem,所以我添加了gem 'mysql2' I am not able to install it using bundle install , and it gives me this error. 我无法使用bundle install安装它,它给了我这个错误。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/Ben/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20150307-17143-1jx7cob.rb extconf.rb 
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/Users/Ben/.rvm/rubies/ruby-2.2.0/bin/$(RUBY_BASE_NAME)
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysql-config
        --without-mysql-config
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-mlib
        --without-mlib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-zlib
        --without-zlib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-socketlib
        --without-socketlib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-nsllib
        --without-nsllib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-mygcclib
        --without-mygcclib
        --with-mysqlclientlib
        --without-mysqlclientlib

extconf failed, exit code 1

Gem files will remain installed in /Users/Ben/.rvm/gems/ruby-2.2.0/gems/mysql2-0.3.18 for inspection.
Results logged to /Users/Ben/.rvm/gems/ruby-2.2.0/extensions/x86_64-darwin-14/2.2.0/mysql2-0.3.18/gem_make.out
An error occurred while installing mysql2 (0.3.18), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.18'` succeeds before bundling.

I have no idea how to get it to work, so any help would be appreciated. 我不知道如何让它工作,所以任何帮助将不胜感激。

Here is some info on my computer. 这是我的电脑上的一些信息。 ruby -v => ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14] ruby -v => ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]

gem 'rails', '4.1.5' (rails -v won't work) gem 'rails', '4.1.5' (rails -v不起作用)

bundler -v => Bundler version 1.8.4 bundler -v => Bundler version 1.8.4

OS: Mac Yosemite 操作系统:Mac Yosemite

For Mac Users: 对于Mac用户:

brew install mysql
gem install mysql2

For Ubuntu Users: 对于Ubuntu用户:

sudo apt-get install mysql-server mysql-client libmysqlclient-dev
sudo gem install mysql2

Installing the libmysqlclient-dev gives you the necessary files to compile the mysql2 gem which is what Rails will use to connect to MySQL when you setup your Rails app. 安装libmysqlclient-dev为您提供了编译mysql2 gem所需的文件,这是Rails在您设置Rails应用程序时将用于连接MySQL的内容。


Finally, run bundle install 最后,运行bundle install

try to install 'libmysqlclient-dev' first 尝试先安装'libmysqlclient-dev'

sudo apt-get install libmysqlclient-dev

and after run 然后跑

bundle install

I figured out my problem, I was running rails server in RubyMine, but for some reason, RM was using an old version of ruby. 我想出了我的问题,我在RubyMine中运行rails server ,但由于某种原因,RM使用旧版本的ruby。 Changing the project's sdks worked perfectly! 改变项目的sdks工作得很好!

Make sure that you install your gems using bundler. 确保使用bundler安装宝石。

Run

bundle install

or simply 或者干脆

gem install mysql2

Then include it in your database.yml file 然后将它包含在database.yml文件中

Not an OS specific answer, but may help others: 不是OS特定的答案,但可能有助于其他人:

Newer MySQL2 adapters (v0.4.x) are not compatible with Rails 4.1.5. 较新的MySQL2适配器(v0.4.x)与Rails 4.1.5不兼容。 Specifying an older mysql2 gem (eg v0.3.x) fixes the issue: 指定一个较旧的mysql2 gem(例如v0.3.x)可以解决这个问题:

gem 'mysql2', '~> 0.3.21'

Source: https://github.com/brianmario/mysql2/issues/675 资料来源: https//github.com/brianmario/mysql2/issues/675

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM