Laravel 外键约束报错

Posted

技术标签:

【中文标题】Laravel 外键约束报错【英文标题】:Reporting Error Due to Foreign Key Constraint in Laravel 【发布时间】:2020-04-21 22:40:06 【问题描述】:

从表中删除一些行时,我在检查中收到以下错误

消息:SQLSTATE[23000]:完整性约束违规:1451 无法删除或更新父行:外键约束失败

我知道错误是由于失败的外键引起的。 我想显示一条错误消息,说明删除项已被使用。

我正在使用 Laravel 5.8、php 7.3、mysql

有人对此有任何想法吗?

【问题讨论】:

这是由于您在表上设置的主键和外键,因此不允许您从相关表中删除行。 我知道为什么会出现错误。我面临的问题是报告它并向用户显示他们试图删除的项目已在其他地方使用,因此无法删除 【参考方案1】:

您可以将删除行的代码放在try block 中,并像这样在catch block 中处理异常。

try 
  // ...

 catch (\Illuminate\Database\QueryException $e) 
    var_dump($e->errorInfo);

var_dump() 将提供有关异常的详细信息,然后您可以在不使脚本失败的情况下对其进行管理。

【讨论】:

以上是关于Laravel 外键约束报错的主要内容,如果未能解决你的问题,请参考以下文章

LARAVEL 5.5 外键约束的格式不正确'

Laravel 迁移:无法添加外键约束

Laravel 改变外键约束

Laravel“外键约束失败”

Laravel-7 迁移中的外键约束形成错误

Laravel Eloquent truncate - 外键约束