スポンサーリンク

[CakePHP3.8]migration スナップショットで取得したマイグレーションファイルがマイグレートできない件

CakePHP

cakephp3.8+mysqlでマイグレーションファイルを作成中に不具合が起きました。

下記のコマンドで、現在DBに設定されているテーブルの状態でマイグレーションフィルを作成できます。

# bin/cake bake migration_snapshot Initial

で、それを復元する場合は以下でできるはずなのですが…

# bin/cake bake migrations migrate

こんな感じなエラーが出て復元できない場合があるみたいです。

InvalidArgumentException: An invalid column type "tinyinteger" was specified for column "status".

どうも、tinyintegerという型が使えないようで下記のように書き換える必要があるようです。
以下、スナップショットでできたマイグレーションファイルの変更点を抜粋します。


use Phinx\Db\Adapter\MysqlAdapter;

//... 省略
$table = $this->table('users');
$table->addColumn('id', 'integer')
//$table->addColumn('status', 'tinyinteger')
$table->addColumn('status', 'integer',['limit' => MysqlAdapter::INT_TINY])

型をintegerに変更したうえでMysqlAdapterでINT_TINYを指定してあげる必要があるようです。