hoge blog

燃えるゴミは火曜と金曜

MacBook ProとMySQLの組合せでハマった話

普段はMacBook Pro(以下、MBP)をメインに使っています。

MBPに入れているMySQLをずっと動かしていたのですが、設定ファイル変更等のためターミナルからmysql.server restartを実行したところ、

 

ERROR! The server quit without updating PID file (*****.pid)

 

と表示され、MySQLが起動しなくなってしまいました。

このような場合、The server 〜 PID fileGoogleで検索して同様のエラーとその対処法を探していく...のですが、ここでドツボにはまりました。

こちらのブログにも書かれていますが、上記のエラー文でググってみれば、原因・解決方法が多様なエラーだということが分かります。

 

私の場合

不要なプロセスをkillするだとか、PIDファイルやその周辺の所有権をいじってみたりだとか、検索で上位に出てくるものは(私の場合)ハズレでした。

 

私の場合、MBPが接続しているネットワークが変わったことが原因でした。

 

ネットワークが変わったとは、MySQLの起動時(mysql.server start)と終了時(mysql.server stop)に、別のネットワークに繋がっているということです。

実は、MacMySQLそれぞれの仕様が連鎖して起きたエラーだったのです。

 

 

原因1. MySQL起動中のMBPを別ネットワークに繋ぎMySQLを終了させる

これは、ノートパソコンだからこそ起きやすかったのかもしれません。

例えばMySQLを自宅で起動させ、職場・学校・カフェなどのネットワークで終了させようとすると、次の問題へ繋がります。

 

原因2. Macのローカルホスト名が変更される

以下の記事を参考にさせていただきました。

ざっくり言えば、繋げているネットワークが変わる(自宅→職場 や 学校→テザリング)と、Mac本体内で使用するローカルなホスト名が変更になる場合があるということです。

ローカルホスト名が変更になったところで、次の問題へ進みます。

 

原因3. MySQLのPIDファイルのファイル名が変わる

先のエラー文には、PIDファイルのファイル名も書かれていましたが、実はこのファイル名にローカルホスト名が使われています。

そのため、自宅で起動したMySQLが作るPIDファイル(例:home.local.pid)と学校で起動したMySQLが作るPIDファイル(例:school.local.pid)が異なることになります。

 

結果 MySQLはPIDファイルを見失う

上記の例を使うと、自宅で起動したMySQL(このときhome.loca.pidを作成)を学校で終了させようとした時、MySQLは存在しないschool.local.pidを探そうとするため、上述のエラーが発生していました。

 

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

 

 

防止方法

以下の記事を参考に、ローカルホスト名を固定化することで再発を防止できました。

ちなみに私は、仕方なくMySQLを再インストールすることにしました。データベースを約半分失いましたが、勉強料ということで...

いや〜、ローカルホスト名がコロコロ変わるのも、ローカルホスト名をフェイル名に使用するのも、控えてほしいなぁ...

 

Apple iPod shuffle 2GB 第4世代 2015年モデル ブルー MKME2J/A

Apple iPod shuffle 2GB 第4世代 2015年モデル ブルー MKME2J/A