Laravel 5.1请求的未知数据库类型枚举 [英] Laravel 5.1 Unknown database type enum requested

查看:63
本文介绍了Laravel 5.1请求的未知数据库类型枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

运行 php artisan migration 时,出现以下错误

[Doctrine \ DBAL \ DBALException]
请求了未知的数据库类型枚举,Doctrine \ DBAL \ Platforms \ MySqlPlatform可能不支持它.

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

如何解决此问题.

代码:

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

推荐答案

Laravel 5.1官方文档指出:

The official Laravel 5.1 documentation states:

注意:当前不支持使用enum列重命名表中的列.

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

如果您要更改另一列也没关系,如果表包含enum 随时随地,它将无法正常工作.这是一个原则DBAL问题.

It doesn't matter if you're trying to change another column, if the table contains a enum anywhere it won't work. It's a Doctrine DBAL issue.

作为解决方法,您可以删除该列并添加一个新列(列数据将丢失):

As a workaround you could either drop the column and add a new one (column data will be lost):

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

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

或使用数据库语句:

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

这篇关于Laravel 5.1请求的未知数据库类型枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆