CakePHPのマイグレーションコマンドでデータ型のスペルを間違えると○○になってしまう

マイグレーションコマンドでミスってしまうことありますよね。

stringと書くべきところをvarcherと書いてしまったり。

integerと書くべきところをintと書いてしまったり。

そういうミス表記の時にどうなるかというのを実験して、記事に書いてみようと思います。

【自分の環境】

macOS Catalina
PHP7.4.2
CakePHP3.8
MAMP5.7
Apache2.2
MySQL5.7

ミスると…

試しにこのコマンドをターミナルで打ってみます。

./bin/cake bake migration CreateUsers2 name:string mail:varcher age:int gender:tinyint

ちょっとわかりにくいんですが、

・mailカラムのstringと書くべきところをvarcherにした
・ageカラムのintegerと書くべきところをintにした
・genderカラムのbooleanと書くべきところをtinyintにした

こんなミスをしてみました。

果たしてコマンドとして通るのでしょうか。

…通りました。

マイグレーションファイルを見てみます。

public function change()
    {
        $table = $this->table('users2');
        $table->addColumn('name', 'string', [
            'default' => null,
            'limit' => 255,
            'null' => false,
        ]);
        $table->addColumn('mail', 'string', [
            'default' => null,
            'limit' => 255,
            'null' => false,
        ]);
        $table->addColumn('age', 'string', [
            'default' => null,
            'limit' => 255,
            'null' => false,
        ]);
        $table->addColumn('gender', 'string', [
            'default' => null,
            'limit' => 255,
            'null' => false,
        ]);
        $table->create();
    }

ご覧のようにミスったところは全部stringになっています。

教訓

普通にコマンドが通ったと思って甘く見ていると、stringでおかしかった…ということも有り得ますね。

気をつけていきたいです。

終わりに

以上となります。

割と小ネタでしたが、ハマることもありそうなので、書いてみました。

CakePHPでしかやったことないですが、他のフレームワークでもそうなんでしょうかね…。

マイグレーションコマンドはCLIということでミスりがちなので、気をつけていきたいです。

ありがとうございました。