Doctrine\DBAL\DBALException : Unknown database type enum requested.

概要

Doctrine\DBALを インストールしてカラムに変更を加えるマイグレーションを実行しようとすると発生するエラーとその回避の方法についてです。

参考

エラーの内容

migrationでテーブルに変更を加えるときには Doctrine\DBAL をインストールする必要がある。

enum型のあるテーブルでカラムの変更を加えようとすると下記のエラーがでる。

Doctrine\DBAL\DBALException  : Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

Doctrine\DBALがenumをサポートしてないから。

Note: Renaming columns in a table with a enum column is not currently supported.

このエラーは変更を加えようとしているカラムがenumでなくても同じテーブルにenum型があれば発生する。

回避の方法

Doctrine\DBALがenumに引っかからないようにすれば解決するようだ。

対象のマイグレーションファイルに初期化のメソッドを追加してDoctrine\DBALがenumをstringにマップするようにする。

public function __construct()
{
    DB::getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
}

これでenum型を持ったままカラム変更のマイグレーションが成功した。