デプロイ時に、MYSQLにdatabaseをcreateしたときに出たエラー #<Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)> Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "pool"=>5, "username"=>"sfc-b", "pass
今回のエラーは結構手強かった😅
デプロイ時に、AWSを使って、データベースを準備し、
ユニコーンでデプロイするときの流れのところで、
#<Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)>
Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "pool"=>5, "username"=>"sfc-b", "password"=>nil, "socket"=>"/tmp/mysql.sock", "database"=>"sfc-b_production"}, {:charset=>"utf8"}
(If you set the charset manually, make sure you have a matching collation)
Created database 'sfc-b_production'
というエラーがしつこく、、とてもしつこくでていた
database.ymlと照らし合わせてみると、
どうやら、本番環境が読み込めていないらしい。
どうしたら、ちゃんと読み込んでくれるのだろう。。。
GitHubにもしっかり
この部分を追記したものをあげて、反映されているのに、
と悩んでいた。
もしかして、ローカルでいらんコードを書いていて、
それが邪魔しているのでは?
と思い、新しくnew_app
して、検証用のアプリも準備した。
しかし、その検証用のアプリでも
エラーになるのだった。。
ただ、これで、コードに問題はなく、
やはり、データベース側の読み込みがうまくいっていないという当初の
仮説に絞り込まれることになったのはよかった。
最後に行き着いたのは、
「GitHubにあげたものを、キーを通して、ES2側にうまく渡っていないのでは」
という仮説にいきつき、GitHubから直接働きかけるのではなく、
「では直接、ローカルからデータベースに話しかける」
という結論が浮かんだ。
そのやり方は、
ターミナルから直接、コマンドをとおして伝えることだった。
そのやり方は
[ec2-user@ip-172-31-23-189 <リポジトリ名>] git pull origin master
これだ!
こうすることで、直接、EC2側に「database.ymlの記述変えたよ、反映してね」
と伝えることができるということらしいのだ。
このエラーは
「1ヶ月かかった」
という人もどうやら居た様なので、危機感を感じていたが、
なんとか丸一日で終戦してよかった☺️