2017-02-09 205 views
0

我遇到這個問題,當我runn遷移iv得到這個錯誤「[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:一般錯誤:1005無法創建表projecto_app#sql-118c_1d(錯誤:150 「外鍵約束是不正確形成 」)(SQL:ALTER TABLE parks附加約束parks_user_id_foreign外鍵(user_id)引用usersid)上刪除C ascade)」Laravel 5.3遷移外鍵約束不正確

用戶表創建第一個是創建表個公園

use Illuminate\Support\Facades\Schema; 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateParksTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('parks', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id'); 
      $table->string('name',100); 
      $table->string('address',100); 
      $table->string('post-code',6); 
      $table->string('city',20); 
      $table->timestamps(); 
      $table->softDeletes(); 
      $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     }); 

    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('parks'); 
    } 
} 

的文件名是: 2017_01_12_000000_create_users_table 2017_02_09_111834_create_parks_table

所以你可以看到tkat有PK比公園需要FK user_is早些時候,用戶表。

回答

2

我希望你現在得到了你的答案。 對於仍在尋求這種解決方案的其他人來說,這可能發生的原因之一是,當您創建遷移時,這些文件將標記爲創建日期2017_05_05_042553_create_parks_table.php。 在自公園這種情況下,依賴於用戶表,只需重命名用戶和公園表的創建日期之前更改創建日期的任何日期。