9

I am trying to use the mysql 2 gem with Rails, so I added gem 'mysql2'. I am not able to install it using bundle install, and it gives me this error.

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]

gem 'rails', '4.1.5' (rails -v won't work)

bundler -v => Bundler version 1.8.4

OS: Mac Yosemite

Ben Aubin
  • 5,542
  • 2
  • 34
  • 54

5 Answers5

23

For Mac Users:

brew install mysql
gem install mysql2

For Ubuntu Users:

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.


Finally, run bundle install

Sharvy Ahmed
  • 7,247
  • 1
  • 33
  • 46
5

try to install 'libmysqlclient-dev' first

sudo apt-get install libmysqlclient-dev

and after run

bundle install
rfellons
  • 656
  • 12
  • 28
1

I figured out my problem, I was running rails server in RubyMine, but for some reason, RM was using an old version of ruby. Changing the project's sdks worked perfectly!

Ben Aubin
  • 5,542
  • 2
  • 34
  • 54
1

Make sure that you install your gems using bundler.

Run

bundle install

or simply

gem install mysql2

Then include it in your database.yml file

  • what was solution. I'm stuck on this, tried uninstalling mysql2 gem, reinstalling, keep getting errormkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. – bjm88 Dec 03 '15 at 21:36
1

Not an OS specific answer, but may help others:

Newer MySQL2 adapters (v0.4.x) are not compatible with Rails 4.1.5. Specifying an older mysql2 gem (eg v0.3.x) fixes the issue:

gem 'mysql2', '~> 0.3.21'

Source: https://github.com/brianmario/mysql2/issues/675

GG Crew
  • 11
  • 1
  • 3