Question

I've install Ruby 2, Rails 4 and MySQL (with homebrew).

I tried to install the gem "mysql2" but i got this message :

gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** 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=/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby
--with-mysql-config
--without-mysql-config


Gem files will remain installed in /usr/local/rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.11 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.11/ext/mysql2/gem_make.out

Can you help me ?

Was it helpful?

Solution

For some reason, install mysql via homebrew was broken. You have to manually edit the mysql_config.

The mysql_config file of homebrew stay in /usr/local/Cellar/mysql/5.6.12/bin, Open it with sudo, around line 120, find these lines:

cflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!

And remote -Wno-null-conversion -Wno-unused-private-filed in both line like this:

cflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!

Save the file and execute brew install mysql again and it should work.

Check this blog post.

OTHER TIPS

Check the compatibility of Rails and mysql version you are installing. With me I was starting Rails 4.1.15 with Mysql 8.0 which didn't work and I came across similar errors. Then i installed

brew install mysql56

Before this uninstall mysql if you have already installed one using -

brew uninstall mysql
brew cleanup

Now create a new rails project by specifying database to be used as mysql

rails new <PROJECT_NAME> -d mysql

This will create a new rails 4 project with compatible mysql After this you can always configure the database.yml file for further details

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top