While running php artisan migrate, I got the following error
[Doctrine\DBAL\DBALException]
Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.
How to resolve this issue.
Code:
public function up() {
Schema::table('blogs', function (Blueprint $table) {
$table->string('wordpress_id')->nullable();
$table->string('google_blog_id')->nullable()->change();
});
}
It is a known issue as stated in Laravel 5.1 documentation.
Note: Renaming columns in a table with a
enum
column is not currently supported.
It happens when you have a enum
column in your database table. Whether you are trying to rename another column, or change another column to nullable
, this bug will appear. It's an issue with Doctrine\DBAL
.
An easy fix for this is to just add this constructor method in your database migration file.
public function __construct()
{
DB::getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
}
This will map all the ENUM
columns to VARCHAR()
, and the column will accept any string.
This worked for me on Laravel 5.1 and Laravel 5.3. I hope this bug can be fixed soon.
Credit to @Gmatkowski's answer at https://stackoverflow.com/a/32860409/1193201