سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Mehrjoo
اختلال در پروژه واقعی در قسمت مایگریشن ها
محسن موحد حل شده توسط محسن موحد

باسلام و احترام

من سه تا دیتابیس با مایگریشن درست کردم و مقادیر زیر رو توی هرکدومشون گذاشتم

اولی :
php artisan make:migration ShipDivision
با محتوای
Schema::create('ship_divisions', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });
دومی :
php artisan make:migration ShipDistricts
با محتوای
Schema::create('ship_districts', function (Blueprint $table) {
            $table->id();
            $table->foreignId('ship_division_id')->constrained()->nullOnDelete();
            $table->string('name');
            $table->timestamps();
        });
سومی:
php artisan make:migration ShipState
با محتوای
Schema::create('ship_states', function (Blueprint $table) {
            $table->id();
            $table->foreignId('ship_division_id')->constrained()->nullOnDelete();
            $table->foreignId('ship_district_id')->constrained()->nullOnDelete();
            $table->string('name');
            $table->timestamps();
        });

سیستم موقع مایگریت کردن اولی رو میاد اضافه میکنه و واسه دومی روی کلید خارجی گیر میده . 

هم یکجا مایگریت کردم و هم اولی رو مایگریت کردم و بعد رفتم سراغ بعدی بازم خطا دارم

INFO  Running migrations.
  2025_02_28_174658_create_ship_divisions_table .................................... 22.42ms DONE
  2025_02_28_181425_create_ship_districts_table .................................... 53.45ms FAIL
   Illuminate\Database\QueryException 
  SQLSTATE[HY000]: General error: 1005 Can't create table `hami_shoping`.`ship_districts` (errno: 150 "Foreign key constraint is incorrectly formed") (Connection: mysql, SQL: alter table `ship_districts` add constraint `ship_districts_ship_division_id_foreign` foreign key (`ship_division_id`) references `ship_divisions` (`id`) on delete set null)

سلام،

ship_division_id بصورت not null تعریف شده، اگر میخوای nullOnDelete رو داشته باشی nullableاش کن.

بهترین پاسخ
محسن موحد ۱۲ اسفند ۱۴۰۳، ۰۷:۲۰