😱

CakePHP 5 app.phpを変えてもDB接続できない時

2024/02/28に公開

結論

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