首页 > 解决方案 > laravel迁移中外键添加约束错误

问题描述

我已经在 laravel 中编写了迁移,但是当我运行此迁移时,我收到了以下错误

> SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
> (SQL: alter table `campaign_notifications` add constraint `campaign  
>       _notifications_campaign_id_foreign` foreign key (`campaign_id`) references `campaigns` (`id`) on delete cascade)

我的迁移代码

    Schema::create('campaign_notifications', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('campaign_id')->index();
        $table->string('user_uuid')->nullable();
        $table->string('post_id')->default(0);
        $table->tinyInteger('is_opened')->default(0);
        $table->tinyInteger('sent')->default(0);
        $table->string('payload')->nullable();
        $table->string('failed_type')->nullable();
        $table->timestamps();
        $table->foreign('campaign_id')->references('id')->on('campaigns')->onDelete('cascade');
 });

标签: mysqllaravel

解决方案


首先确保您campaign的数据库中已经有一个表(查看迁移的时间戳),以便您可以在当前迁移中引用该表。基本上,要使此迁移正常工作,您的数据库中需要一个活动表,在此之后您无法运行campaign表迁移。

另外,将您的更改campaign_id为无符号整数

$table->unsignedInteger('campaign_id'); $table->foreign('campaign_id')->references('id')->on('campaigns')->onDelete('cascade');


推荐阅读