Error installing mysql2: Failed to build gem native extension

Viewed 289277

I am having some problems when trying to install mysql2 gem for Rails. When I try to install it by running bundle install or gem install mysql2 it gives me the following error:

Error installing mysql2: ERROR: Failed to build gem native extension.

How can I fix this and successfully install mysql2?

31 Answers

For MacOS Mojave:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

On Ubuntu(18.04)

i was able to solve this issue by running the following:

sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2

reference

I have several computers, 32 and 64 bits processor, they run on Ubuntu Linux, Maverick (10.10) release.

I had the same problem, and for me, the sudo apt-get install libmysql-ruby libmysqlclient-dev did the job!!!

On Debian Stretch the package that worked for me was default-libmysqlclient-dev

sudo apt-get update && apt-get install -y default-libmysqlclient-dev

In my case this helped:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"

Then:

gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib

Result:

Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed

See this post (WARNING: Japanese language inside).

I can see most of the people have found the solution to this problem, this is mostly coused but not limited to missing packages, this happened to me after I have purged mysql and reinstalled it. I had to run this command in order to fix my problem:

sudo apt-get install libmysqlclient-dev

This command helped me fix my problem

I got the gem built on Mac OS X 10.6.6 by 1) Ensuring the Developer tools package is installed 2) Downloading the current MySQL package (5.5.8 in my case) from Source 3) Installing the cmake tool from cmake.org 4) Following the instructions in section 2.11 of INSTALL-SOURCE from the mysql distribution files 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include The gem built successfully, but there are two errors in the documentation that rdoc and ri complain about. But now when I try to require 'mysql2' I get a

LoadError: no such file to load -- mysql2/mysql2

I was hoping the error I would get was that the libmysqlclient.16.dylib couldn't be found because we figured that out in another post (search for install_name_tool).

My $PATH has /usr/local/mysql in it (that's where my source and built files are located), so I'm a little stumped. If anyone has any thoughts, I'll check back after a few hours of sleep.

Under ubuntu 20.04 LTS it's the only solution that have been working for me:

sudo apt-get install ruby-mysql2

According to https://github.com/brianmario/mysql2/issues/1175 , I fixed it by

gem install mysql2 -- \
 --with-mysql-lib=/usr/local/Cellar/mysql/8.0.26/lib \
 --with-mysql-dir=/usr/local/Cellar/mysql/8.0.26 \
 --with-mysql-config=/usr/local/Cellar/mysql/8.0.26/bin/mysql_config \
 --with-mysql-include=/usr/local/Cellar/mysql/8.0.26/include

An updated solution for Windows users. I am running

Windows 10

MySql 8.0.30

Ruby 3.1.2

My Ruby version is the one from rubyinstaller.org with the MYSYS devkit included

I downloaded a MariaDB C connector library msi installer file v3.1.17, ran it and it installed the relevant files in a directory in Program Files. I copied that directory to another location, renamed it so that it didn't have any spaces and ran the command:

gem install mysql2 --platform=ruby -- --with-mysql-dir="c:/my-mariadb-connector-path-with-no-spaces"

This gave me a functioning gem.

This is a specific version of the library and not the most recent. Finding your way around the download options on the MariaDB website is a bit confusing, so here is the direct download link.

https://dlm.mariadb.com/2319542/Connectors/c/connector-c-3.1.17/mariadb-connector-c-3.1.17-win64.msi

Before I got to this point I'd tried several things which hadn't worked. I've included them below as background information, but if all you're interested in is a working solution then you can stop reading now.

A few sources suggest that if you have the MYSYS devkit installed you can build the gem with the following command:

ridk exec gem install mysql2 --platform=ruby -- --use-system-libraries

This did not compile for me.

You may also have seen a recommendation to download an archived version - 6.1 - of the MySQl connector library. I tried this, the gem compiled, but when I tried to start my app I got an error message: "Incorrect MySQL client library version! This gem was compiled for 6.1.11 but the client library is 10.5.5."

In MySQL V8 and above the C library is no longer an optional extra but is included in the main installation. I found the relevant files, copied them to a no spaces directory path and tried the usual command. Again the gem compiled but the app wouldn't start. This time the error message said that "This gem was compiled for 8.0.30 but the client library is 10.5.5"

I also tried the latest version of of the MariaDB library. With that the error message said that the gem was compiled for 10.6.8. You need the specific version described above, and yes, it really is a MariaDB library you need even if you're using "Original" MySql as distributed by the Oracle Corporation

Related