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



我想调用用户表中的列"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((

我相信Laravel中的increments((方法会产生一个无符号整数。

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

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

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

用户表中使类型Adh_id未签名:

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

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

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

只要在"foreign"后面加上"Id",它就是foreignId

最新更新