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 迁移中的外键约束形成错误的主要内容,如果未能解决你的问题,请参考以下文章

迁移问题:无法在laravel中添加外键约束

SQLSTATE[HY000]:一般错误:1215 无法添加外键约束 [Laravel 7.0]

:完整性约束违规:1452 无法添加或更新子行:laravel 迁移中的外键约束失败

AWS RDS 的外键约束不起作用

外键约束错误地形成了laravel

Laravel 5.2 迁移:无法添加 char 数据类型的外键