1. ホーム
  2. php

Laravel 5.1 Unknown database type enum が要求されました。

2023-08-26 23:49:15

質問

実行中 php artisan migrate を実行しているときに、次のようなエラーが発生しました。

[Doctrine]

Unknown database type enum requested, Doctrine DBAL⇄MySqlPlatforms はそれをサポートしないかもしれません。

この問題を解決する方法。

コードを入力します。

public function up() {
    Schema::table('blogs', function (Blueprint $table) {
        $table->string('wordpress_id')->nullable();
        $table->string('google_blog_id')->nullable()->change();
    });
}

どのように解決するのですか?

Laravel 5.1公式サイト ドキュメント に記載されています。

注意:enumカラムを持つテーブルのカラム名の変更は、現在サポートされていません。

別のカラムを変更しようとしている場合は関係ありませんが、もしテーブルに enum どこでも では動作しません。これは Doctrine DBAL の問題です。

回避策として、カラムを削除して新しいカラムを追加することができます ( カラムのデータは失われます。 ):

public function up()
{
    Schema::table('users', function(Blueprint $table)
    {
        $table->dropColumn('name');
    });

    Schema::table('users', function(Blueprint $table)
    {
        $table->text('username');
    });
}

を使用するか、DB文を使用します。

public function up()
{
    DB::statement('ALTER TABLE projects CHANGE slug url VARCHAR(200)');
}

public function down()
{
    DB::statement('ALTER TABLE projects CHANGE url slug VARCHAR(200)');
}

出典 https://github.com/laravel/framework/issues/1186