在 Laravel 迁移中更改列会导致异常:更改表的列需要 Doctrine DBAL

Posted

技术标签:

【中文标题】在 Laravel 迁移中更改列会导致异常:更改表的列需要 Doctrine DBAL【英文标题】:Changing column in Laravel migration causes exception: Changing columns for table requires Doctrine DBAL 【发布时间】:2016-08-15 07:25:17 【问题描述】:

我正在尝试在一次迁移中更改表 reserves 中我的列之一的最大长度。代码如下所示:

public function up()

    //
    Schema::table('reserves', function($table)
        $table->string("mobile", 11)->change();
    );

但是当通过 artisan 运行迁移时,它会抛出一个异常并说:

[RuntimeException] 更改表“reserves”的列需要 DBAL 学说;安装“教义/dbal”。

问题是什么,我该如何解决?

【问题讨论】:

【参考方案1】:

在框架根目录下执行如下命令即可解决问题:

composer require doctrine/dbal

【讨论】:

为什么默认不安装这个? @NicuVlad 默认情况下未安装它,因为设计人员希望将其保留在框架之外,因为他们认为这些更多是边缘情况。如果需要,您始终可以将其拉入,因此他们选择将其保留在核心框架之外以避免膨胀。我不能说我同意,我一直在使用它,但这就是原因。 请注意,您可能会遇到“找不到类'Doctrine\DBAL\Driver\PDOmysql\Driver'”错误。因此,在作曲家文件中添加短语“学说/dbal”:“^ 2.0”。 引用docs 可能会有所帮助:Before modifying a column, be sure to add the doctrine/dbal dependency to your composer.json file.【参考方案2】:

添加到 composer.json

"require": 
        ...
        "doctrine/dbal": "*"
    ,

运行“作曲家更新”命令

【讨论】:

以上是关于在 Laravel 迁移中更改列会导致异常:更改表的列需要 Doctrine DBAL的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 迁移中更改主 ID

再次迁移特定表 laravel

PHPMYADMIN中的laravel更改表而无需迁移

迁移问题:无法在laravel中添加外键约束

Laravel Auth 更改表名

如何修复laravel迁移中的外键错误