【发布时间】:2020-10-13 03:57:11
【问题描述】:
由于此错误,我无法运行迁移命令:
SQLSTATE[HY000]:一般错误:1215 无法添加外键 约束(SQL:alter table
user_schools添加约束user_schools_school_id_foreign外键 (school_id) 引用schools(id) 删除级联)
代码
users
Schema::create('users', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->softDeletes('deleted_at', 0);
$table->timestamps();
});
schools
Schema::create('schools', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('code')->unique();
$table->string('name');
$table->set('type', ['TK', 'SD', 'SMP', 'SMA', 'SMK']);
$table->softDeletes('deleted_at', 0);
$table->timestamps();
});
user_schools
Schema::create('user_schools', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->foreignId('school_id')->constrained('schools')->onDelete('cascade');
$table->foreignId('user_id')->constrained('users')->onDelete('cascade');
$table->set('type', ['Manager', 'Staff', 'Teacher', 'Student']);
$table->softDeletes('deleted_at', 0);
$table->timestamps();
});
注意:我的迁移文件基于 laravel documentation,但出现此错误。
有什么想法吗?
【问题讨论】:
-
$table->id();也让你的id独一无二,primary和auro_increament,他们为什么要使用$table->uuid('id')->primary();而不是那个? [你的外键属于这个is] -
@RonvanderHeijden screenshot ibb.co/mD77vFB
-
@TalhaF。 uuid 是唯一的,不必自动递增,它是随机字符串
-
你可以试试
$table->id();希望问题消失 -
把
foreignId('user_id')改成uuid('user_id')就够了
标签: mysql laravel database-migration