laradockで「docker-compose exec mysql bash」が無反応だった時の対処
1001 回閲覧されました
みなさんこんにちは、jonioです。
laradockでMySQLに接続してテーブルを見たら日本語が「?」に変わって文字化けしたので直そうとしました。
ターミナルで「docker-compose exec mysql bash」とコマンドを打ったらなぜか無反応になって何回試してもMySQL に接続できません。
調べた結果解決できたのですが解決方法を忘れないための自分へのメモと他の方で同じ経験をしているかもしれないと思いこの記事を残します。
今の所2パターン確認しています。
私が使っているパソコンはmacです。
MySQLに接続できなくなった原因1
MySQLのテーブルに表示されている言語を日本語にする時にネットの記事を読んだら「laradock > mysql > my.conf」に追記すると書いてありました。
17行目も書かないといけないのに書かずにmy.confを反映されるコマンド「docker-compose up -d –build workspace nginx mysql」を入力しました。
そしてMySQLに接続しようとして「docker-compose exec mysql bash」を何度入力してもMySQLに接続できなくなりました。
記述に問題がある場合はエラーログが表示されるはずなのに表示がありませんでした。
docker-compose ps
変だと思い「docker-compose ps」でlaradockが起動しているのかを確認したら↓になりました。
6行目の「Exit 1 」は通常「Up」になっているのに違ったので調べたらMySQLに接続できていない状態と知りました。
変だと思いログを調べる事にしました。
docker-compose logs
ログは↓になりました。
docker-compose psを確認した時にquizapp_mysql_1 にExit 1があったので「mysql_1」しか見てません、実際はめちゃくちゃ長いです。
「ERROR」みたいな言葉がないかを調べたら4行目に「[ERROR] unknown variable ‘default-character-set=utf8mb4’」がありこれが繰り返されています。
文字設定でエラーが出ていますが内容的に心当たりがあるのはMySQLのテーブルの文字を日本語設定した部分です。
「my.confに追記したのが原因だ」と思いこれを削除してから「docker-compose up -d –build workspace nginx mysql」を入力したらMySQLに接続できました。
MySQLに接続できなくなった原因2
Dockerに負荷がかかってMySQLに接続できなくなる時がありました。
こんな場合はDockerを立ち上げた状態でDockerのアイコンを右クリックして「Restart」をクリックします。
これでDockerが再起動になりMySQLに接続できると思います。
この時起きていた現象はMySQLに接続できたりできなくなったりしていました。