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でおかしかった…ということも有り得ますね。
気をつけていきたいです。