尝试在同一个表中创建外键时的常规错误1215,整数为整数

时间:2018-03-24 21:06:23

标签: laravel eloquent

我正在尝试在同一个表中创建一个外键,无论我测试什么,我都会收到错误。

在Connection.php第647行:

SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:alter table trip_tags add constraint trip_tags_parent_foreign外键(parent)参考   关于删除级联的trip_tagsid

在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是整数,我不能让它与错误一起迁移。

1 个答案:

答案 0 :(得分:2)

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

->unique()添加到声明:

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