SQLSTATE [23000]:完整性约束违规:1452 无法在 laravel 迁移中添加或更新子行
Posted
技术标签:
【中文标题】SQLSTATE [23000]:完整性约束违规:1452 无法在 laravel 迁移中添加或更新子行【英文标题】:SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row on laravel migration 【发布时间】:2021-05-29 20:54:06 【问题描述】:我在 appointments
表中添加了一个外键,我的数据库通过 laravel 迁移被称为 arl
但是当我运行迁移时:
public function up()
Schema::table('appointments', function (Blueprint $table)
$table->foreign('order_detail_id')->references('id')->on('order_details');
);
我收到了这个错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`arl`.`#sql-5470_6`, CONSTRAINT `appointments_order_detail_id_foreign` FOREIGN KEY (`order_detail_id`) REFERENCES `order_details` (`id`)) (SQL: alter table `appointments` add constraint `appointments_order_detail_id_foreign` foreign key (`order_detail_id`) references `order_details` (`id`))
检查错误不知道为什么sql不识别我的表名,把这个奇怪的名字arl`.`#sql-5470_6
应该是arl`.`appointments
我去heidi sql复制de查询,我得到了同样的错误。
编辑:在 laragon 本地服务上的问题我尝试使用 xampp 并且工作正常
【问题讨论】:
请为 order_details 和约会添加表格定义。 【参考方案1】:试试这个:
$table->unsignedBigInteger('order_detail_id');
$table->foreign('order_detail_id')->references('id')->on('order_details');
【讨论】:
表名的问题,不知道sql为什么把我的表名取为#sql-5470_6
【参考方案2】:
您必须删除表 order_details
中的所有行,然后重试。
或者:
add ->default( any id from table order_details)
$table->unsignedBigInteger('order_detail_id')->default(1);
$table->foreign('order_detail_id')->references('id')->on('order_details');
【讨论】:
>您必须删除表 order_details 中的所有行,然后重试。这是我的问题的解决方案以上是关于SQLSTATE [23000]:完整性约束违规:1452 无法在 laravel 迁移中添加或更新子行的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败
Innobyte 插件问题:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行
SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败
Laravel:正确保存后返回重定向抛出 SQLSTATE [23000]:完整性约束违规
SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败 - Laravel
Laravel 7 错误 - SQLSTATE [23000]:完整性约束违规:1048 列 'first_name' 不能为空