gpt4 book ai didi

php - Laravel 错误在 Debug模式下太误导以太了,有什么方法可以有更清晰的错误吗?

转载 作者:行者123 更新时间:2023-11-29 07:44:11 24 4
gpt4 key购买 nike

我在迁移中遇到拼写错误:

    Schema::create('business_category',function(Blueprint $table){
$table->integer('business_id')->unsinged();
$table->integer('category_id')->unsinged();
});
Schema::create('business_category',function(Blueprint $table){
$table->foreign('business_id')->references('id')->on('business');
$table->foreign('category_id')->references('id')->on('category');
});

然后我运行“php artisan migrate”此错误已显示:

[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'brandecide.#sql-42 4_aa' (errno: 150) (SQL: alter table business_category add constraint bus
iness_category_business_id_foreign foreign key (business_id) references business (id))

此错误的原因是:

        $table->integer('business_id')->**unsinged**();

我应该将其更改为

        $table->integer('business_id')->**unsigned**();

修复它。我应该如何从错误中理解这一点?

最佳答案

How should I understand this from the error?

不幸的是,你不能。我同意这个错误非常具有误导性。问题是 unique() 不是一个真正的方法。 (如果是这样,你会得到一个方法未定义的异常)

相反,对 unique() 的调用最终会被 Illuminate\Support\Fluent 捕获

public function __call($method, $parameters)
{
$this->attributes[$method] = count($parameters) > 0 ? $parameters[0] : true;
return $this;
}

然后添加到 $this->attributes 而不进行任何检查。这样不会导致任何错误,而只会导致一个永远不会使用的属性 (unsinged) 以及缺少导致约束失败的 unsigned

如果你愿意的话可以create an issue (类型为“提案”)在 github 上。也许有人知道如何防止这种情况发生。 (例如,已识别方法的白名单)

关于php - Laravel 错误在 Debug模式下太误导以太了,有什么方法可以有更清晰的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com