【Laradockエラー】laradock_mysql_1 docker-entrypoint.sh mysqld Exit1
※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。
【目次】
背景
LaradockでdockerにLaravelの環境構築を行おうとしたところ、MySQLが思ったように立ち上がってくれませんでした。
一応解決はしたので備忘録としてブログにしますが、最善な解決方法ではない気がします。
内容
Laradockとは?
LaradockはdockerでLaravelを動かせるように環境構築をしてくれるサービスです。
環境構築手順については、こちらを参考にしてみてください。
今回の私のエラーは、上記のサイトを参考にして環境構築を行なった結果、発生したものになります。
エラー背景
こちらのサイトを参考にしながら環境構築を行なっていたところ、MySQLだけが上手く立ち上がってくれません。
$ docker-compose ps
=>
...
laradock_mysql_1 docker-entrypoint.sh mysqld Exit 1
... //他のStateはUpになっています
じゃあ、MySQLだけ立ち上げてみようと思い、以下のコマンドを打つと詳しいエラー内容が出てきました。
$ docker-compose up mysql
=>
...
mysql_1 | 2019-11-05T16:06:58.636370Z 1 [System] [MY-011012] [Server] Starting upgrade of data directory.
mysql_1 | 2019-11-05T16:06:59.027402Z 1 [ERROR] [MY-012526] [InnoDB] Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.27. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
mysql_1 | 2019-11-05T16:06:59.027541Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
mysql_1 | 2019-11-05T16:06:59.458990Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
mysql_1 | 2019-11-05T16:06:59.460581Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
mysql_1 | 2019-11-05T16:06:59.460764Z 0 [ERROR] [MY-010119] [Server] Aborting
...
rego logとやらが、前のMySQLのバージョンで構成されているのが問題になっているっぽい。
ここがポイントのような気がするのですが、何故なのかはよく分かっていないです・・・
エラー解決
ググっていると参考になりそうなサイトがありました。
Fails to initialize MySQL database · Issue #1350 · laradock/laradock · GitHub
要は、MySQLのバージョンを5.7に修正するとエラーが解決するみたいです。
.env
MYSQL_VERSION=latest
=>
MYSQL_VERSION=5.7
念のために、MySQLのファイルも削除してから、dockerを再度立ち上げてみます。
$ docker-compose down
$ rm -rf ~/.laradock/data/mysql
$ docker-compose up -d nginx mysql redis beanstalkd
$ docker-compose ps
そしたら、次は正常にMySQLが立ち上がっていました。
アップグレードする時は、MySQLのバージョンを揃えておけということだったんでしょうか?
ちなみに、この後MySQLのバージョンを8.0にしてMySQLを立ち上げても、正常に稼働しました。
・・・謎。
用語
rego log:
参考資料:MySQLのbinlogとredo logについて - Qiita
今後に向けて
プログラミングをスムーズに理解するには、やっぱり英語ができるのが必要不可欠だなと実感しました・・・
英語勉強しないとなぁ
参考
素晴らしい記事に感謝いたします。
Laradockを使ったLaravel開発環境構築 - Qiita
Fails to initialize MySQL database · Issue #1350 · laradock/laradock · GitHub