macOS上で開発環境を作る時に、.. ERROR! The server quit without updating PID file (/usr/
を通して、
実行環境
今回は、
Homebrewのインストールに必要な要素としては、
- Intel 64bit CPU
- macOS 10.
12以降 - XCodeのCommand Line Tools(CLT)
xcode-select --install
でインストール
- bashまたはzshなどのBourne Shell互換のshellが存在している
これらの環境が整っている時に、
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrewを利用してMySQL5.brew update && brew upgrade
を行ったところ、
症状
brew update && brew upgrade mysql
を実行したあと、mysql.
でMySQLを立ち上げようとすると以下のようなエラーが表示され、
$ mysql.server start Starting MySQL ... ERROR! The server quit without updating PID file (/usr/local/var/mysql/MacBook2.pid).
この状態になってしまったら、/usr/
配下にあります。
$ cd /usr/local/var/mysql/ $ ls *.err MacBook2.err
今回はMacBook2.
tail -f MacBook2.
を行った状態で(err名は適宜置き換えて実行してください)、mysql.
を実行して、
$ tail -f MacBook2.err ←1つ目のターミナルで実行して待ちます $ mysql.server start ←別のターミナルで実行します
起動に失敗した場合には1つ目のtail -fを実行しているターミナルに以下のようなエラーログが吐き出されます。
2019-04-26T00:46:19.6NZ mysqld_safe Logging to '/usr/local/var/mysql/MacBook2.err'. 2019-04-26T00:46:19.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql 2019-04-26T00:46:19.826171Z 0 [System] [MY-010116] [Server] /usr/local/Cellar/mysql/8.0.15/bin/mysqld (mysqld 8.0.15) starting as process 46527 2019-04-26T00:46:20.023930Z 1 [ERROR] [MY-012526] [InnoDB] Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.18. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html 2019-04-26T00:46:20.023971Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error. 2019-04-26T00:46:20.332191Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine. 2019-04-26T00:46:20.333154Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2019-04-26T00:46:20.334619Z 0 [ERROR] [MY-010119] [Server] Aborting 2019-04-26T00:46:20.337384Z 0 [System] [MY-010910] [Server] /usr/local/Cellar/mysql/8.0.15/bin/mysqld: Shutdown complete (mysqld 8.0.15) Homebrew. 2019-04-26T00:46:20.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/MacBook2.pid ended
今回のログで重要な情報は[ERROR]
となっているところで、2019-04-26T00:46:20.
の行になります。簡単に翻訳すると、
redoログは、
クラッシュリカバリ中に、
不完全なトランザクションによって書き込まれるデータを訂正するために使用されるディスクベースデータ構造。通常の操作中に、 InnoDBテーブルデータを変更するリクエスト (SQLステートメント、 またはNoSQLインタフェースからの低レベルAPI呼び出しから発生) をエンコードします。予期しないシャットダウン前にデータファイルの更新を終了していない変更は、 自動的に再現されます。
今回MySQLが起動できなかった環境では、brew upgrade
を行った結果として、
今回の場合の対処方法
開発データしかなくて手荒く行っても良いのであれば、
Homebrewではbrew link
という機能を使って過去のバージョンに戻すことができるので、
$ brew unlink mysql ←現在のMySQL8をunlinkする $ brew link --force [email protected] ←MySQL5.7をlinkする $ mysql.server start Starting MySQL .. SUCCESS! $ mysql -uroot -p Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.25 Homebrew …中略… $ mysql.server stop
このように、
$ brew unlink [email protected] $ brew link --force mysql $ mysql.server start Starting MySQL .. SUCCESS! $ mysql -uroot -p Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.15 Homebrew
ということで、
まとめ
brew update && brew upgrade
は個人の開発環境ではよく実行することがありますが、
また、