代码之家  ›  专栏  ›  技术社区  ›  niko craft

试图在同一个表中生成一个从整数到整数的外键时出现一般错误1215

  •  0
  • niko craft  · 技术社区  · 8 年前

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

    在连接中。php第647行:

    SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter table trip_tags 添加约束 trip_tags_parent_foreign 外键( parent )参考 恩斯 trip\u标签 ( id )删除级联时)

    在连接中。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 回复  |  直到 8 年前
        1
  •  2
  •   DevK    8 年前

    因为你的 id 列上没有索引。

    添加 ->unique() 声明:

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