MacBook ProとMySQLの組合せでハマった話
普段はMacBook Pro(以下、MBP)をメインに使っています。
MBPに入れているMySQLをずっと動かしていたのですが、設定ファイル変更等のためターミナルからmysql.server restartを実行したところ、
ERROR! The server quit without updating PID file (*****.pid)
と表示され、MySQLが起動しなくなってしまいました。
このような場合、The server 〜 PID fileをGoogleで検索して同様のエラーとその対処法を探していく...のですが、ここでドツボにはまりました。
こちらのブログにも書かれていますが、上記のエラー文でググってみれば、原因・解決方法が多様なエラーだということが分かります。
私の場合
不要なプロセスをkillするだとか、PIDファイルやその周辺の所有権をいじってみたりだとか、検索で上位に出てくるものは(私の場合)ハズレでした。
私の場合、MBPが接続しているネットワークが変わったことが原因でした。
ネットワークが変わったとは、MySQLの起動時(mysql.server start)と終了時(mysql.server stop)に、別のネットワークに繋がっているということです。
実は、MacとMySQLそれぞれの仕様が連鎖して起きたエラーだったのです。
原因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必修! )
- 作者: 西沢夢路
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/05/01
- メディア: 大型本
- 購入: 2人 クリック: 10回
- この商品を含むブログ (9件) を見る
防止方法
以下の記事を参考に、ローカルホスト名を固定化することで再発を防止できました。
ちなみに私は、仕方なくMySQLを再インストールすることにしました。データベースを約半分失いましたが、勉強料ということで...
いや〜、ローカルホスト名がコロコロ変わるのも、ローカルホスト名をフェイル名に使用するのも、控えてほしいなぁ...
Apple iPod shuffle 2GB 第4世代 2015年モデル ブルー MKME2J/A
- 出版社/メーカー: Apple Computer
- 発売日: 2015/07/17
- メディア: エレクトロニクス
- この商品を含むブログを見る