mysql - 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');
});
解决方案
首先确保您campaign
的数据库中已经有一个表(查看迁移的时间戳),以便您可以在当前迁移中引用该表。基本上,要使此迁移正常工作,您的数据库中需要一个活动表,在此之后您无法运行campaign
表迁移。
另外,将您的更改campaign_id
为无符号整数
$table->unsignedInteger('campaign_id');
$table->foreign('campaign_id')->references('id')->on('campaigns')->onDelete('cascade');
推荐阅读
- javascript - 如何删除快照数据中的 Firebase 云功能按键?
- python - 映射列值熊猫
- node.js - 我可以将已经创建的 Angular 项目与 nodejs(express) 连接起来吗
- azure - Azure Log Analytics REST API 返回 502(错误网关)错误
- java - 如何让球从我的 JSlider 上“弹回”?(我已经让它反弹了)
- c++ - CUDA Vector Reduction 来处理长度小于 512 的向量?
- php - php中的亚马逊产品api
- android - 无需服务和 GUI 应用程序即可连续执行
- docker - Terraform 的 Docker 容器无法启动
- javascript - ReCaptcha - Chrome 隐藏扩展