LoginSignup
2
1

More than 5 years have passed since last update.

osx で gem mysql2 のインストールに失敗する際の解消方法

Last updated at Posted at 2015-09-18

注意

自分は以下の方法でインストールが成功するようになったという記事です

場合によってはDBなどに問題が発生する可能性があります

非常に無責任な記事なので、問題がある場合はコメントで指摘をいただけたらと思います。

本記事を参考に操作を行い問題が発生したとしても自己責任でお願い致します

記事の対象読者

  • osxでhomebrewを使っている方
  • brewコマンドでmysqlを入れた方
  • gem の mysql2 が上手くインストール出来ない方

エラーメッセージ抜粋

Installing mysql2 0.4.1 with native extensions                                                                                                                                                           

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

解決方法

環境の確認

brew でインストールしたmysqlをバージョンアップにより複数存在させていないか以下で確認する

ls /usr/local/Cellar/mysql

複数存在しない場合

今回の記事の対象者ではないので、別の記事を参照してください。

複数バージョン存在していた場合

以下のコマンドでmysqlを最新にアップデートし、複数バージョン存在するmysqlを1つにするのが問題の解決方法です。

以下の点に注意してください

  • 現在使っているmysqlのバージョンを上げてしまいます
  • 現在使っているDBのデータはアップデート後もおそらく使えますが、使えなくなる可能性もあると思います。

以上の点を踏まえたうえで、問題ない方は以下を叩いてください。

brew upgrade mysql # mysqlを最新版にする
# 最新版にしておかないと警告が出る
# Warning: Skipping mysql: most recent version 5.6.XX not installeda
brew cleanup mysql # 古いのを消す

(怖いもの知らずの方は)mysqlをアップデートせずに強引にrm -rfをしても良いのかもしれないが、怖いのでbrew cleanupを使う。

もしくはosxを開発環境として使わず、VMを立てて開発しましょう。

補足

筆者の環境

  • OSX 10.10.5
  • brew でインストールした mysqlを利用している
  • rbenv を利用した ruby 2.2.3

筆者の環境での問題発生

rails new project -d msqyl

以上を叩いた際にエラーが出てmysql2がインストール出来なかった

問題点

rails newの際に、bundle installが実行され、つまりgem install mysql2がエラーになるという話。

調査

ググるとインストールされているmysqlの設定がおかしい!と言うのが出てくる。

なんとなくしっくりこない。

調査中にbrewでインストルしたmysqlが複数バージョン存在しているのに気づき、それが原因ではないかと疑った。

mysqlが複数バージョン存在している理由

以前、何も考えずにbrew upgradeを叩いた影響だと推測できる。

brew upgrade は前のバージョンを残しつつ、いい感じにアップデートしてくれるみたいなので気付かなかった。

(無意識の内にバージョンが上がっていたので、ほんとうに「いい感じ」なのかは保証しかねます。)

なぜmysqlが複数存在するのが問題だったのか?

未調査なので、もし分かる方がいたら編集リクエストをいただけたらと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1