新規にCakePHPの環境をインストールしていて、なぜかデータベースに接続できず
SQLSTATE[HY000] [2002] No such file or directory
というエラーがでてどうにもこうにも困りました。
せっかちな方は結論に飛んでください。
原因調査
podが無いってないんだろとか沿いう言うことだと思っていろいろ見てみたんだがどうもそうでもないらしい。
というかphpMyAdminは普通に接続できる。
ネットを調べてみたけど、mysql.sockがどうこうとか書いてあるけど、そもそも別のサーバーでIP接続なんで関係なし。
3.9は使ったことないから何か変わったのかなぁ?ということでCookBookのインストールの項目をみながらいろいろやってみたけど、特に昔と変わらず…。
ためしにBakeコマンドを打ってみたら
#0 /var/www/html/cakephp3/vendor/cakephp/cakephp/src/Database/Driver.php(93): PDO->__construct('mysql:host=loca...', 'my_app', 'secret', Array)
ん!?localhostにつなぎに行ってる?DB名もmy_appってデフォルトで書いてある奴になってる?
config/app.php に書いた設定が反映されてない???ん??ん???
結論
config/app_local.php っていうファイルが追加されてて、こっちが優先されている模様。
開発環境と本番環境で設定分けたい場合は、ローカル設定をapp_local.phpの方に書いねっていうことらしい。
どのバージョンかわかりませんが、最近のバージョンで追加された?用です。ということで、app_local.phpを書き換えるなり消すなりしたらつながりました。
はっきり言って、こんな機能いらない。環境で設定分けたかったら .ENVとかWebサーバーアプリから環境変数で渡せばいいじゃない?しかも、CookBookにも書いてないし…。
こういう変なことばかりするからLaravelに負けるんだよ…。