SQLSTATE[HY000]:一般错误:1215 无法在表用户中添加外键约束 Laravel

Posted

技术标签:

【中文标题】SQLSTATE[HY000]:一般错误:1215 无法在表用户中添加外键约束 Laravel【英文标题】:SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint Laravel in table user 【发布时间】:2021-07-13 16:22:42 【问题描述】:

我想在 users 表中调用列 'id_typeAdh'

Schema::create('type_adhs', function (Blueprint $table) 
            $table->increments('id_typeAdh');
            $table->string('libelle',120)->unique();
            $table->text('description')->nullable();
            $table->timestamps();
        );

 Schema::create('users', function (Blueprint $table) 
            $table->increments('id');
            $table->string('nom');
            $table->string('prenom');
            $table->string('tel_personnel');
            $table->string('tel_prof');
            $table->enum('societe',['x','y']);
            $table->enum('titre_civilite',['Mr','Mrs']);
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->integer('typeAdh_id');
            $table->foreign('typeAdh_id')->references('id_typeAdh')->on('type_adhs')->onDelete('cascade');
            $table->rememberToken();
            $table->timestamps();
        ); 

ErrorMessage : SQLSTATE[HY000]: 一般错误: 1215 无法添加外键约束 (SQL: 更改表 users 添加约束 users_typeadh_id_foreign 外键 (typeAdh_id) 在删除时引用 type_adhs (id_typeAdh)级联)

【问题讨论】:

【参考方案1】:

我相信 Laravel the increments() method produces an unsigned integer。

但是您在 users 表中添加了 typeAdh_id 作为有符号整数。您不能将其作为外键来引用父表的无符号主键。

所以你应该把它变成一个无符号整数来匹配:

$table->unsignedInteger('typeAdh_id');
$table->foreign('typeAdh_id')->references('id_typeAdh')->on('type_adhs')->onDelete('cascade');

【讨论】:

【参考方案2】:

在您的 users 表中使您的 typeAdh_id 未签名:

$table->integer('typeAdh_id')->unsigned()->nullable();
$table->foreign('typeAdh_id')->references('id_typeAdh')->on('type_adhs')->onDelete('cascade');

【讨论】:

【参考方案3】:

从用户迁移中删除 $table->integer('typeAdh_id');

并使用$table->foreignId('typeAdh_id')->references('id_typeAdh')->on('type_adhs')->onDelete('cascade');

只需在“foreign”后添加“Id”,即为foreignId

【讨论】:

以上是关于SQLSTATE[HY000]:一般错误:1215 无法在表用户中添加外键约束 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[HY000]:一般错误:1215 无法在表用户中添加外键约束 Laravel

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

SQLSTATE[HY000]:一般错误:1364 字段

SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值

SQLSTATE [HY000]:一般错误:1364 字段“标题”没有默认值

SQLSTATE [HY000]:一般错误:2053