Laravel 尝试在同一个表中创建一个从整数到整数的外键时出现一般错误1215

Laravel 尝试在同一个表中创建一个从整数到整数的外键时出现一般错误1215,laravel,eloquent,Laravel,Eloquent,我试图在同一个表中生成外键,无论我测试什么,我都会得到一个错误 在Connection.php第647行中: SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter tabletrip\u tagsadd constrainttrip\u tags\u parent\u foreign外键(parent)请参阅 encestrip_标签(id)在删除级联上) 在Connection.php第449行: SQLSTATE[HY000]:一般错误:1215无法添加外键

我试图在同一个表中生成外键,无论我测试什么,我都会得到一个错误

在Connection.php第647行中:

SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter table
trip\u tags
add constraint
trip\u tags\u parent\u foreign
外键(
parent
)请参阅 ences
trip_标签
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');
    });
我试着将parent指向id,两者都是无符号整数,我猜创建外键失败的原因是它们在某种程度上不兼容,我无法找出错误所在


我试图将parent指向uuid,但后来不得不将它变成一个字符串,这就成功了。但是我必须将父点设置为整数id,并且我无法使用我们的错误迁移它。

这是因为您的
id
列上没有索引

->unique()
添加到声明中:

$table->integer('id')->unsigned()->unique();

这是因为您的
id
列上没有索引

->unique()
添加到声明中:

$table->integer('id')->unsigned()->unique();

!== <代码>无符号整数hi devk?我没有指向uuid列,只是指向id命名的列,知道会发生什么吗?哦,对不起。我的错误。那么我认为发生错误是因为您没有
id
上的索引。尝试向它添加
unique()
。就是这样!你想发布一个真实的答案吗?我可以向上投票并选择正确答案吗?很乐意帮助:)也将其作为答案发布!==<代码>无符号整数hi devk?我没有指向uuid列,只是指向id命名的列,知道会发生什么吗?哦,对不起。我的错误。那么我认为发生错误是因为您没有
id
上的索引。尝试向它添加
unique()
。就是这样!你想发布一个真实的答案吗?我可以投票并选择正确的答案吗?很乐意帮助:)也将其作为答案发布