移行時に「errno:150」外部キー制約が正しく形成されませんでした。LARAVEL 5.5外部キー制約が正しく形成されていません '
私は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です。
は、念のために、あなたはそれがここのサブカテゴリテーブルを必要とする:
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');
});
私はあなたが、マイグレーションの実行順序に問題があると思います。親テーブルは、外部キーとして親IDが使用されるテーブルより先に作成される必要があるためです。 –
@SagarGautam私はすでにこの前にこの種の問題に遭遇していたので、私はすでにそれを手配しました。上記のように、外部キーを持つテーブルの前に親テーブルが最初に作成されました。ありがとうございます。 – Punky
@punkyはあなたのテーブル名ですsub_categoriesまたはサブカテゴリを確認してください –