在 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的主要内容,如果未能解决你的问题,请参考以下文章