CakePHP4系でbakeコマンドを使ってビューファイルを作成できない時の対処法

CakePHP4系でbakeコマンドを使ってビューファイルを作成できない時の対処法

455 回閲覧されました

みなさんこんにちは、jonioです。

CakePHPの4系で下記のbakeコマンドを使ってビューファイルを作成しようとしました。

bin/cake bake template Tags 

そしたら下記のエラーが発生してビューファイルを作成することができません。

Connection to Mysql could not be established: SQLSTATE[HY000] [2002] No such file or directory

エラーに「SQLSTATE[HY000] [2002]」の表示があるのでデータベース接続エラーでビューファイルが作成できないみたいです。

対処法が分からなくて調べて解決したのですが次同じ状況になった時の為にこの記事を残します。

よく分からず調べたので情報が不正確な可能性があります、ご了承ください。

なおモデルをbakeコマンドで作成する時も同じエラーが表示されたのでモデル作成の場合も該当すると思います。

CakePHPのバージョン

4.5.4です。

データベースに接続できているかの確認

接続できているのをデフォルトのトップページで確認しました。

データベースに接続はできています。

原因

ビューファイルを作成するにはCakePHPのプロジェクトとデータベース(今回はMySQL)が接続している状態じゃないといけなくそれを実現するにはソケットファイルという物が必要でソケットファイルがどこにあるかを指定しないといけないみたいです。

ソケットファイルはあるけどそれがどこにあるかを指定しなかったからデータベースに接続はできているけどエラーが出たと思われます。

対処法

「CakePHPのプロジェクト > config > app_local.php」にソケットファイルがどこにあるかの追記をします。

'Datasources' => [
        'default' => [
            'host' => 'localhost',
            /*
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',

            'username' => 'root',
            'password' => 'root',

            'database' => 'CakeBlog',
            /**
             * If not using the default 'public' schema with the PostgreSQL driver
             * set it here.
             */
            //'schema' => 'myapp',

            /**
             * You can use a DSN string to set the entire configuration
             */
            'url' => env('DATABASE_URL', null),
            
            'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',       //この行を追加
        ],

これでbakeコマンドを使ってビューファイルの作成ができるようになります。