2016-12-21 2 views
3

почему Laravel схема ответаОбщая ошибка: 1005 не удается создать таблицу, ограничения внешнего ключа неправильно формируется в Laravel

[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1005 Can't create table test . #sql-13cc_d0 (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table cities add constrai nt cities_provinces_id_foreign foreign key (provinces_id) references provinces (id) on delete cascade)

[PDOException] SQLSTATE[HY000]: General error: 1005 Can't create table test . #sql-13cc_d0 (errno: 150 "Foreign key constraint is incorrectly formed")

первый стол

Schema::create('provinces', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->boolean('is_enable'); 
     $table->boolean('is_deletable'); 
     $table->boolean('is_editable'); 
     $table->boolean('deleted'); 
     $table->timestamps(); 
    }); 

второй стол

Schema::create('cities', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->integer('province_id')->unsigned()->index(); 
     $table->boolean('is_enable'); 
     $table->boolean('is_deletable'); 
     $table->boolean('is_editable'); 
     $table->boolean('deleted'); 
     $table->timestamps(); 


     $table->foreign('province_id') 
      ->references('id')->on('provinces') 
      ->onDelete('cascade'); 

    }); 

ответ

1

Вы должны убедиться, что миграция таблицы provinces выполняется до cities table migra Тион.

Вы должны изменить provinces или cities имя файла миграции, чтобы убедиться, что временную метку в начале файла миграции provinces таблицы будут представлены cities таблицы.

1

Попытка создать таблицу, а затем добавить ограничение:

Schema::create('cities', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('name'); 
    $table->integer('province_id')->unsigned()->index(); 
    $table->boolean('is_enable'); 
    $table->boolean('is_deletable'); 
    $table->boolean('is_editable'); 
    $table->boolean('deleted'); 
    $table->timestamps(); 
}); 

Schema::table('cities', function (Blueprint $table) { 
    $table->foreign('province_id')->references('id')->on('provinces')->onDelete('cascade'); 
});