当用 Laravel 的数据迁移来更新 Enum 类型的字段时,比如:修改字段名
Schema::table('table_name', function (Blueprint $table) { $table->renameColumn('from', 'to'); });
当执行迁移命令的时候:
php artisan migrate
会报异常:
DoctrineDBALDBALException:Unknown database type enum requested,
DoctrineDBALPlatformsMySQL57Platform may not support it.
当遇到这个问题的时候,首先确保已经安装了扩展 doctrine/dbal ,因为 Laravel 官方文档已经提到:
在修改字段之前,请确保将 doctrine/dbal 依赖添加到 composer.json 文件中。Doctrine DBAL 库用于确定字段的当前状态, 并创建对该字段进行指定调整所需的 SQL 查询
如果没有安装此扩展,请执行命令安装:
composer require doctrine/dbal
然后修改迁移文件
DB::getDoctrineSchemaManager() ->getDatabasePlatform() ->registerDoctrineTypeMapping('enum', 'string'); Schema::table('pattern_column_orders', function (Blueprint $table) { $table->renameColumn('payment', 'payment_method'); });
这时候再执行迁移命令发现已经可以成功执行了