あじちゃんのブログ。備忘録。

〜エンジニアもOLなんですかね?

larave5.5:Unknown database type enum requested を解決できた

↓この記事、解決しました!!

blog.azimicat.com

ドキュメントが間違っていました。

enumカラムの名前の変更はサポートされていないと書いてありましたが、実際にはenumカラムを含むテーブル上の任意のカラムの名前を変更したときにエラーが発生します。

 

そしてこれには回避策がありました。

ずばりDoctrine に enum が文字列であることを伝えればよいです。

 

$platform = Schema::getConnection()->getDoctrineSchemaManager()->getDatabasePlatform();
$platform->registerDoctrineTypeMapping('enum', 'string');

 

これをこんな感じでいれてあげればOK

public function up()
{
  // enum を string 扱いするように指示する
  $platform = Schema::getConnection()->getDoctrineSchemaManager()->getDatabasePlatform();
  $platform->registerDoctrineTypeMapping('enum', 'string');

  // カラム名を変更
  Schema::table('animals', function (Blueprint $table) {
      $table->renameColumn('Lion', 'Cat');
  });

  // string型へ変更
  Schema::table('newsBotPrograms', function (Blueprint $table) {
      $table->string('Cat')->change();
  });
}

 

解決はできたけど、バグのようなので「update で解決されるといいね」というものらしい。