Problem on migration : products category foreign key
-
on laravel8 framework , can anyone help me with this i also used ,
this way but still it doesn't work
https://stackoverflow.com/questions/22615926/migration-cannot-add-foreign-key-constraintCannot add foreign key constraint..
Error is as below SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `products` add constraint `products_category_id_foreign` foreign key (`category_id`) references `categories` (`id`)) at vendor/laravel/framework/src/Illuminate/Database/Connection.php:678 674▕ // If an exception occurs when attempting to run a query, we'll format the error 675▕ // message to include the bindings with SQL, which will make this exception a 676▕ // lot more helpful to the developer instead of just the database's errors. 677▕ catch (Exception $e) { ➜ 678▕ throw new QueryException( 679▕ $query, $this->prepareBindings($bindings), $e 680▕ ); 681▕ } 682▕ +9 vendor frames 10 database/migrations/2021_01_19_074944_create_products_table.php:38 Illuminate\Support\Facades\Facade::__callStatic("create") +21 vendor frames 32 artisan:37 Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
code on the migration
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateProductsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('products', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('slug')->unique(); $table->string('Short_Description')->nullable(); $table->string('description'); $table->decimal('regular_price'); $table->decimal('sale_price')->nullable(); $table->string('SKU'); $table->enum('stock_status',['instock','outstock']); $table->boolean('Featured')->default(false); $table->unsignedInteger('quantity')->default(10); $table->string('image')->nullable(); $table->string('images')->nullable(); $table->integer('category_id')->nullable()->unsigned(); $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('products'); } }
-
show me your database/migrations folder
-
@kasun-rathnayake Possible Causes
- Data type on category_id column and id column on category table mismatch
- Check migration order, category table should created first prior to products table
-
@kasun-rathnayake change data type of category_id as unsignedBigInteger()
-
@nubelle did it bro still the same
-
@root said in Problem on migration : products category foreign key:
show me your database/migrations folder
-
@dev_lak thanks bro i checked them too , but not working as said on the forums , its like sql dont get foreign keys , but also i tried out there solutions too but not working.
-
@kasun-rathnayake can you post the categories table migration?
-
try with this
$table->unsignedBigInteger('category_id')->nullable(); $table->foreign('category_id')->references('id')->on('categories');