Laravel-7 迁移中的外键约束形成错误
Posted
技术标签:
【中文标题】Laravel-7 迁移中的外键约束形成错误【英文标题】:Foreign key constraint is incorrectly formed in Laravel-7 migration 【发布时间】:2020-12-23 11:57:18 【问题描述】:当您使用 laravel 迁移应用外键时,会出现此类错误
“外键约束格式不正确”
迁移的默认结构
User Table
---------
Schema::create('users', function (Blueprint $table)
$table->id();
$table->timestamps();
);
Chat Table
---------
Schema::create('chats', function (Blueprint $table)
$table->id();
$table->integer('user_id');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
);
【问题讨论】:
【参考方案1】:发生这种情况是因为我们的列大小不应该完全相同,请看下面。
$table->id();
This will create a big integer
与
$table->integer('user_id');
This will create a small integer that's why Our foreign key relations fails
如何解决此问题
$table->unsignedBigInteger('user_id');
或
$table->foreignId('user_id')->constrained();
添加 unsignedBigInteger 即可解决您的问题。
【讨论】:
你也可以使用$table->foreignId('user_id')
@apokryfos 你是对的,这是来自 laravel-7。 " $table->foreignId('user_id')->constrained(); "以上是关于Laravel-7 迁移中的外键约束形成错误的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[HY000]:一般错误:1215 无法添加外键约束 [Laravel 7.0]