😱
CakePHP 5 app.phpを変えてもDB接続できない時
結論
CakePHPド初心者的記事なのであしからず。。
先に結論から書くと、app.php でDB名とかホスト名とか正しくいれても、接続できない場合があって、その時は
'url' => env('DATABASE_URL', 'mysql://ユーザー名:パスワード@ホスト/データベース名'),
の記述が必要だよ。+ここにポート番号を入れると逆に繋がらなかったり、入れないと繋がらなかったり(どっちやねん)するよ。ということです。
経緯
コントローラーでDB情報を取得して、ビューで表示する画面を開くと
Connection to Mysql could not be established: SQLSTATE[HY000] [1044] Access denied for user 'LAA~~~~~~'@'172.19.0.0/255.255.0.0' to database 'cake'
なるエラー。あーapp.php の修正がいるのか、検索してもそればっかり出るし。
とdatabase名、ホスト名、ユーザー名、パスワードを修正して、再度FTP。
Connection to Mysql could not be established: SQLSTATE[HY000] [1044] Access denied for user 'LAA~~~~~~'@'172.19.0.0/255.255.0.0' to database 'cake'
は?そもそもデータベース名に"cake"を指定していないんだが。。。
ChatGPTさんに聞いても、app.php、app_local.php の修正をしろ、としか言わず。。
何を試してもこのエラーが発生するので、調べる糸口もなく積んだかに思えます。
しかし、全然指摘のなかった
'url' => env('DATABASE_URL', null),
を
'url' => env('DATABASE_URL', 'mysql://ユーザー名:パスワード@ホスト/データベース名'),
で設定すると、あら不思議。つながりました。。。。
ちなみにChatGPTさんに「'url' => env('DATABASE_URL', null),」の変更が必要なのではないですか?と聞いてやっと解決しました。
ただし、おしえてくれたのは
'url' => env('DATABASE_TEST_URL', 'mysql://ユーザー名:パスワード@ホスト名:ポート番号/データベース名'),
でご丁寧に例まで
'url' => env('DATABASE_TEST_URL', 'mysql://root:password@mysql~~~.phy.lolipop.lan:3306/dbname'),
出してくれたのでこのまま修正して記述するとエラーです。
理由はポート番号の指定があるからで、ポート番号の部分だけ削除するとつながりました。
このへんは使用するレンタルサーバーによって異なるのかもしれません。(正直よくわからん)
記事があまりにも見つからず、泣きそうだったのでここに備忘録として残しておきます。
誰かのお役にたちますように。。
Discussion