我正在尝试在同一个表中创建一个外键,无论我测试什么,我都会收到错误。
在Connection.php第647行:
SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:alter table trip_tags
add constraint trip_tags_parent_foreign
外键(parent
)参考
关于删除级联的trip_tags
(id
)
在Connection.php第449行:
SQLSTATE [HY000]:常规错误:1215无法添加外键约束
这是我的代码
Schema::create('trip_tags', function (Blueprint $table) {
$table->engine = "InnoDB";
$table->uuid('uuid')->unique();
$table->integer('id')->unsigned();
$table->string('name')->nullable();
$table->integer('parent')->unsigned()->nullable();
$table->timestamps();
});
Schema::table('trip_tags', function (Blueprint $table) {
$table->foreign('parent')
->references('id')
->on('trip_tags')
->onDelete('cascade');
});
我尝试将父指向id,两者都是无符号整数,我猜创建外键失败的原因是它们在某种程度上不兼容,我无法弄清楚是什么问题。
我试图将父母指向uuid,但后来不得不把它变成一个字符串而且有效。但我必须让父指向id是整数,我不能让它与错误一起迁移。
答案 0 :(得分:2)
这是因为您的id
列没有索引。
将->unique()
添加到声明:
$table->integer('id')->unsigned()->unique();