大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があれば、コメント頂けると幸いです。

【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

【Docker】MySQLコンテナで使用するイメージを5系から8系に変える時の注意 - websandbag ブログ