MySQL 5.7のLaunch Daemonを使う

Sierra に更新し前投稿の問題以降に再起動をすると、ERROR! The server quit without updating PID file というエラーを出力し MySQL が起動しなくなるという新たな問題が解決しなかったため、MySQL 自体の更新も兼ねて MySQL 5.7をクリーンインストールしました。そこでマニュアルを参照してみると、意外にも MySQL の起動にコントロールパネルの利用を推奨していたので試してみたところ、またまたうまく機能しなかったので少し調べてみました。

その結果、MySQL 5.6 を Yosemite にインストールした時は、起動アイテムを使っていた公式のコントロールパネルが機能せず、別途起動デーモンを書いていた(まさかの公式マニュアルに掲載)のですが、MySQL 5.7 のインストーラは独自の起動デーモン com.oracle.oss.mysql.mysqld.plist/Library/LaunchDaemons/ に配置するそうなので、前バージョンからの移行で 5.7 を利用する場合は com.mysql.mysql.plist を削除する必要がある、という簡単な解決方法でした。

ただ、前バージョンに引き続きコントロールパネルを利用しないという方法も可能なので、その場合は上述のように com.mysql.mysql.plist を削除することなく、コンパネやコマンドを使って公式の com.oracle.oss.mysql.mysqld.plist を読み込まないように、ファイルの場所を代えるなど注意をする必要があります。

参考:

Please DISCARD the tablespace before IMPORT エラー対処

MacOS Sierra 移行前の話なのですが、innoDB を扱う案件があり開発環境で設定してみたところ、phpMyAdmin 4.6 上でテーブル名は見えているのだけど「テーブルがありません」というエラーを返してきたので、該当テーブルを削除した後に再度同じ名前でテーブルを作ろうとすると今度は、”Please DISCARD the tablespace before IMPORT” というエラーを返してきて、二進も三進もいかなくなったということがありました。

そこで例によっておググりなさってみると、/usr/local/mysql/data にある問題となっている DB 名のファイルを消去する方法を見つけたので試してみたところうまくいかなかったので、MySQL の起動を停止し他のファイルを消すか名称変更しつつ再度 MySQL を起動する、という手順を繰り返しディレクトリ内を観察してみた結果、[PC_Name].local.err や [PC_Name].local.pid も関係することが判明し、元々開発環境でデータの消失は問題がないということもあり、次のように MySQL が起動時に参照したり生成するファイルも削除してみたところ、無事テーブル生成が可能になりました。

$ cd /usr/local/mysql/data
$ sudo launchctl unload -F /Library/LaunchDaemons/com.mysql.mysql.plist
$ sudo rm -rf [問題のDB名]
$ sudo rm -rf ib_logfile0
$ sudo rm -rf ib_logfile1
$ sudo rm -rf ibdata1
$ sudo rm -rf [PC_Name].local.err
$ sudo rm -rf [PC_Name].local.pid
$ sudo rm -rf phpmyadmin/
$ sudo launchctl load -F /Library/LaunchDaemons/com.mysql.mysql.plist

もちろんこの後で再び phpMyAdmin を利用するには phpmyadmin/sql/create_tables.sql をインポートし再設定する必要があります。

参考:

Yosemiteで起動時にMySQLを始めるようにする

起動プロセスが Yosemite から変更になったようで、OS の再起動時に自動的に立ち上がる方法を Homebrew を使わずに MySQL を運用している人向けに書きます。

まず、MySQL のローンチデーモンを書きます。
sudo vi /Library/LaunchDaemons/com.mysql.mysql.plist

中身は、下記参考リンクにある Stack overflow の例をコピペすると動かないので、ノードが正しく書かれている Github の方を拝借します。

また、現時点で公式からダウンロードしたインストーラに付属していたコンパネの自動起動チェックはうまく動かないようです。

加えて 5.x 系で my.cnf の書き方が変更になっていたのを忘れて少しハマったのでこちらも併せて参考リンクに添えておきます。

参考: