LARAVEL 5.5外键约束形成错误'

时间:2017-09-11 03:24:56

标签: mysql laravel laravel-5 foreign-keys laravel-migrations

我遇到"错误:150'外键约束形成错误'"迁移时。

我有一张需要3个外键的表:

  Schema::create('ads', function (Blueprint $table) {
        $table->increments('id');
        $table->string('prodname');
        $table->string('mfrname');
        $table->decimal('priceam');
        $table->string('imagenametxt',500);
        $table->string('specstxt',500);
        $table->string('otherinfotxt',500);
        $table->decimal('avalableqty');
        $table->binary('validyn');
        $table->binary('checkyn');
        $table->binary('updatedyn');
        $table->integer('selleridno')->unsigned();
        $table->integer('catidno')->unsigned();
        $table->integer('subcatidno')->unsigned();
        $table->timestamps();

    });

    Schema::table('ads', function(Blueprint $table){
        $table->foreign('selleridno')->references('id')->on('users');
        $table->foreign('catidno')->references('id')->on('categories');
        $table->foreign('subcatidno')->references('id')-> 
         on('subcategories');
    });

在此表之前创建用户,类别和子类别表。 selleridno和catidno已成功创建,但在创建subcatidno的外键我遇到了错误。有什么建议/意见吗?提前谢谢你。

我的数据库是MySql。

如果您需要SubCategories表,请执行以下操作:

Schema::create('sub_categories', function (Blueprint $table) {
            $table->increments('id');
            $table->string('subcategorycd');
            $table->string('subcategorytxt');
            $table->integer('categoryidno')->unsigned();
            $table->timestamps();

            $table->foreign('categoryidno')->references('id')->on('categories');
        });

2 个答案:

答案 0 :(得分:1)

此外键位于名为subcategories

的表上
$table->foreign('subcatidno')->references('id')->on('subcategories');

但您的表实际上称为sub_categories

Schema::create('sub_categories', function (Blueprint $table) {

答案 1 :(得分:0)

当您获得子类别时,您也不需要获得类别,因为您在子类别迁移中获得了类别。

并尝试将其设为user_idsubcategory_id,而不是selleridnosubcatindo

看看它是否有效。

PS:您的子类别创建方法会像对待广告一样发出单独的外包密钥。

Schema::table('subcategory', function(Blueprint $table){ 

    $table->foreign('category')->references('id')-> on('categories'); 
});