• 09-06-2020, 10:49:04
    #1
    Önceden migrate işlemlerini yapıyordum ama php artisan config:cache işlemi yaptıktan sonra, kurduğum yeni sürüm laravellerde bile migrate işlemleri olmuyor.

    Eğer migrate içindeki foreign'leri kaldırırsam migrate ediyor ama onları ekleyince

       Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1005 Can't create table `yayin66`.`users` (errno: 150 "Foreign key constraint is incorrect
    ly formed") (SQL: alter table `users` add constraint `users_yurt_id_foreign` foreign key (`yurt_id`) references `yurtlars` (`id`))
    Hatasını veriyor. İki gündür çözemedim. Nedir problem anlayabilmiş değilim.

    Veri tabanını sildim ekledim yine olmadı.
    Başka laravel kurdum onun üzerinde de olmadı.
    Foreignlerle ilgili bir problem var ama çözemedim.
  • 09-06-2020, 10:53:38
    #2
    Günaydın hocam, 1 defa ben de denk geldim söylediğiniz hataya, izniniz olursa çözümü merak ettim, takipteyim
  • 09-06-2020, 10:59:28
    #3
    Problem yuzde 80 migrate edilen dosyalarin sirasindan kaynaklaniyor ornegin, a tablosunda user_id var diyelim b tablosu ise user tablosu
    B tablosunun idsi ile a tablosundaki user_id birbiriyle baglantili olsun, siz b tablosunu migrate etmeden once a tablosunu migrate ederseniz ilgili tabloyu bulamayacagi icin hata verecektir
  • 09-06-2020, 11:00:07
    #4
    Bu hata genelde veritabanında ilişki kurmaya çalıştığınız alanların tipleri ya da uzunlukları aynı olmadığında oluşur. Mesela int ile bigInt id columnlarını foreign key yapmak gibi. Bu alanları kontrol edebilirsiniz.
  • 09-06-2020, 11:01:09
    #5
    Zeta adlı üyeden alıntı: mesajı görüntüle
    Problem yuzde 80 migrate edilen dosyalarin sirasindan kaynaklaniyor ornegin, a tablosunda user_id var diyelim b tablosu ise user tablosu
    B tablosunun idsi ile a tablosundaki user_id birbiriyle baglantili olsun, siz b tablosunu migrate etmeden once a tablosunu migrate ederseniz ilgili tabloyu bulamayacagi icin hata verecektir
    Hocam katılıyorum dediğinize ama bu iki tabloda birbirine bağlantılı ise nasıl yapmam gerekiyor? İkisinin de birbirinde id'leri var.
  • 09-06-2020, 11:03:56
    #6
    Migtate siralamasini en genelden baslatin yani tablo icerisinde foreign key icermeyen tablolari once migrate edin
  • 09-06-2020, 11:18:32
    #7
    Hocam sıralamada yine malesef foregin key olanlara gelince aynı hatayla takılıyor.
  • 09-06-2020, 11:21:55
    #8
    Laravel ile çalışırken aynı hatayla karşılaşmıştım, sorunu çözdükten sonrada bir medium yazısı yazmıştım incelersen yardımcı olacaktır

    https://medium.com/@mrtplt024/larave...BC-1b498c9b02a
  • 09-06-2020, 11:22:17
    #9
    asosyalnet adlı üyeden alıntı: mesajı görüntüle
    Bu hata genelde veritabanında ilişki kurmaya çalıştığınız alanların tipleri ya da uzunlukları aynı olmadığında oluşur. Mesela int ile bigInt id columnlarını foreign key yapmak gibi. Bu alanları kontrol edebilirsiniz.

    Hocam migrateler şu şekilde mesela ikisi:

    public function up()
    {
    Schema::create('yurtlars', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('yurt_adi');
    $table->unsignedBigInteger('user_id');
    $table->unsignedBigInteger('mintika_id');
    $table->unsignedBigInteger('bolge_id');
    
    
    $table->foreign('user_id')
    ->references('id')
    ->on('users');
    
    $table->foreign('mintika_id')
    ->references('id')
    ->on('mintikalars');
    
    $table->foreign('bolge_id')
    ->references('id')
    ->on('bolgelers');
    });
       public function up()
    {
    Schema::create('users', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('yonetici_isim');
    $table->string('yonetici_kadi')->unique();
    $table->string('password');
    $table->integer('yonetici_yetki')->default(0)->comment('1:root 2:bolgey 3:minty 4:yurty 5:hocaefendi 6:hocahanim 7:dpersonel 8:ihvan 9:ahavat 10:muhibban 11:bolgem');
    $table->unsignedBigInteger('yurt_id')->default(0);
    $table->unsignedBigInteger('mintika_id');
    $table->unsignedBigInteger('bolge_id');
    
    $table->foreign('yurt_id')
    ->references('id')
    ->on('yurtlars');
    
    $table->foreign('mintika_id')
    ->references('id')
    ->on('mintikalars');
    
    
    $table->foreign('bolge_id')
    ->references('id')
    ->on('bolgelers');
            });

    Sonuç olarak birbirinde id'si bulunan tabloları, laravel birbirine bağlayamıyor. Birinden kaldırdığımda çalıştı işlemler.

    Akla gelen soru şu: İki tabloyu birbirinin id'leri ile ilişkilendirmek, acaba veritabanı tasarım mantığına aykırı mı olmuş oluyor?