محمدرضا فلکی
1 سال پیش توسط محمدرضا فلکی مطرح شد
10 پاسخ

چرا بعد از اجرای php artisan migrate ارور میگیرم که جدول X وجود نداره

سلام
قاعدتا برای بار اول که میخوایم پروژٰه رو run کنیم هیچ table ای نداریم توی database
پس میایم و دستور php artisan migrate رو اجرا میکنیم که برامون جداول رو همراه با روابطشون بسازه.
حالا توی سیستم و پروژه من بعد از اجرای این دستور ارور میگیرم که میگه این جدول وجود نداره و این مقدار داخلش نیست!!!
خب مگه اینطوری نیست که باید برای من جداول رو بسازه بعدا اگر جایی یک request رفت به database و اون موقع همچنین table ای وجود نداشت ارور بده؟؟
و حتی برای ارور مقادیر هم من اون مقدار مورد نیازش رو با استفاده از php artisan db:seed توی tables میریزم!!
خب چرا ارور میده؟؟
دوستان اروری که میگیرم:

php artisan migrate

   Illuminate\Database\QueryException 

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'penlms.setting_translations' doesn't exist (SQL: select * from `setting_translations` where `setting_translations`.`setting_id` = 53 and `setting_translations`.`setting_id` is not null)

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
    756▕         // If an exception occurs when attempting to run a query, we'll format the error
    757▕         // message to include the bindings with SQL, which will make this exception a
    758▕         // lot more helpful to the developer instead of just the database's errors.
    759▕         catch (Exception $e) {
  ➜ 760▕             throw new QueryException(
    761▕                 $query, $this->prepareBindings($bindings), $e
    762▕             );
    763▕         }
    764▕     }

  i   A table was not found: You might have forgotten to run your database migrations. 
      https://laravel.com/docs/master/migrations#running-migrations

  1   [internal]:0
      Illuminate\Foundation\Application::Illuminate\Foundation\{closure}()

      +21 vendor frames 
  23  app/Models/Setting.php:137
      Illuminate\Database\Eloquent\Model::__get()

ثبت پرسش جدید
رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
0

درود خوبی...
توی مدل جدولی که تعریف کردید, کد زیر وارد کنید:

protected $table = 'setting_translations';

محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 1 سال پیش آپدیت شد
0

ممنون @Raymond
اومدم که امتحانش کنم دیدم اسم جدول تغییر کرده به sections
و رفتم توی مدل Section و اونجا تعریف کردم که:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Section extends Model
{
    public $timestamps = false;

    protected $guarded = ['id'];

    protected $table = 'sections';

    public function children() {
        return $this->hasMany($this, 'section_group_id', 'id');
    }
}

و بعدش که دستور php artisan migrate رو ران کردم دوباره ارور گرفتم:

 php artisan migrate

   Illuminate\Database\QueryException 

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'penlms.sections' doesn't exist (SQL: select * from `sections`)

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
    756▕         // If an exception occurs when attempting to run a query, we'll format the error
    757▕         // message to include the bindings with SQL, which will make this exception a
    758▕         // lot more helpful to the developer instead of just the database's errors.
    759▕         catch (Exception $e) {
  ➜ 760▕             throw new QueryException(
    761▕                 $query, $this->prepareBindings($bindings), $e
    762▕             );
    763▕         }
    764▕     }

  i   A table was not found: You might have forgotten to run your database migrations. 
      https://laravel.com/docs/master/migrations#running-migrations

  1   [internal]:0
      Illuminate\Foundation\Application::Illuminate\Foundation\{closure}()

      +12 vendor frames 
  14  app/Providers/AuthServiceProvider.php:42
      Illuminate\Database\Eloquent\Model::all()

میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
0

سلام وقت بخیر دوست عزیز میشه کد های مایگریشن sections رو هم بزاری یا اسکرین شات بدی؟


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
0

@m.reza6920
جدول sections وجود داره؟ کدشو بزار ببینیم...


محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 1 سال پیش مطرح شد
0

چون مایگریشن های پروژه خیلی قدیمی بودن و تغیرات زیادی رو روی خود دیتابیس mysql انجام داده بودن من مجبور شدم با یه پکیجی تمام جدول هارو آنالیز کنم و بسازم چون بصورت دستی خیلی خیلی طول میکشید @Raymond @FullStack
sections_migration:
 تصویر


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
0

@m.reza6920
خب به نظر میاد توی لاراول قدیمی هست و اجرا آن دردسرسازه...
سعی کنید پروژه رو به نسخه ۱۰ ارتقا دهید....


محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 1 سال پیش مطرح شد
0

@Raymond پروژه روی ورژن ۹ هست:

"laravel/framework": "^9.0",

یعنی اگر پروژه رو به ۱۰ ارتقا بدم درست میشه؟


محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 1 سال پیش مطرح شد
0

فکر کنم دلیل ارور بخاطر تغییر شکل کدهای تعریف کلاس در ورژن های مختلف لاراول باشه.
ظاهرا پکیجی که ازش برای آنالیز کردن مایگریشن ها استفاده کردم قدیمی بوده.
و فکر کنم باید از:

return new class extends Migration

به:

class CreateUsersTable extends Migration

تغییر بدم تا درست بشه.
@Raymond
@FullStack


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
0

@m.reza6920
پس قبلا ارتقا داده و نیازی نیست...
احتمالا رابطه توی مدل تعریف نشده:

public function section()
{
    return $this->belongsTo(Section::class);
}

رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
0

@m.reza6920
این قسمت کلاس new میگریشن دست نزن و درسته...


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام