RailsでMySQL2が使えなかった時の最終解決法
4分目次
geokit という gem を使いたかったのに sqlite じゃダメだよ〜とのことだったので、MySQL にしようとしたらそれはそれでエラー出て大変な思いをしました。
エラーメッセージ各種
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue. Make sure that gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'
succeeds before bundling.
Errno::EACCES: Permission denied @ rb_sysopen - /Users/mb12/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/mysql2-0.5.2/CHANGELOG.md An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue. Make sure that gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'
succeeds before bundling.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
インストールできないよ〜と言ってます。
確認すべきこと
MySQL を起動できるかどうか確認
$ mysql.server start
で起動できるかどうかを確認してみる。
$ mysql.server start
Starting MySQL
SUCCESS!
となれば平気。もしこれがダメでも$ mysql -u root -p
としてパスワード付きでログインしてみると平気なパターンもあります。
あるいは管理者権限つけて $ sudo chown -R _mysql:_mysql /usr/local/var/mysql
としてみたらパスするケースも多く報告されています。
ちなみに僕は全部ダメだった。うんともすんとも起動しない。
そもそも MySQL がインストールされているのかもチェック
そもそも MySQL を環境に落としてなかったという人もいたのでご確認のほどを。下記コードでインストールできる。
$ brew install mysql
最終的な解決法
まぁ〜〜〜〜〜〜色々調べてやってみたけどまるでダメ。
というわけで MySQL をアンインストールして、再度インストールという手順をとった。コアも何もかも全て一旦削除して、再度インストールすることでbundle install
通るようになった。めでたし。
※ 下記コードは環境内の MySQL 内のデータ全て飛びます。大切なものない人だけ推奨。
$ sudo rm -rf /usr/local/var/mysql
$ brew uninstall mysql
$ brew install mysql
結局、何がダメだったか
原因が特定できたわけではないのですが、一つ思い当たる節があって、それが MAMP の存在。MAMP は PHP のローカル開発環境が使えるようになるソフトで、WordPress のアレコレをするときにがっつり使っているし、MAMP は思いっきり MySQL を使用していたりする(WP 使用するので当たり前ですね)。
別に取っておくべきデータもないし、削除して問題なかったので、アンインストールしたらすんなり Rails で gem も install できました。
WordPress 用に MAMP 使ってて Rails で MySQL インストールできないやんけ!って人は試してみる価値ありです。