2017-02-12 78 views
0

我有一個遷移對我的代碼:不能表像下面laravel錯誤添加外鍵約束

Schema::create('tags', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->char('tag' , 15); 
}); 

現在,我有我的admin表,下面的遷移中,我有相關的外鍵我tags表,遷移如下:

Schema::create('admin', function (Blueprint $table) { 
    $table->char('tag' , 15); 
    $table->foreign('tag')->references('tag')->on('tags'); 
}); 

現在,當我運行這個遷移我得到以下錯誤:

enter image description here

這兩個表都是innodb我在laravel的設置中改變了這個。但我仍然無法添加外鍵約束錯誤。爲什麼?

+0

[This SO answer](https://stackoverflow.com/questions/22615926/migration-cannot-add-foreign-key-constraint-in-laravel)解決您的問題。 –

+0

爲什麼不引用id列而不是標籤列本身?無論如何,數據庫是否乾淨?因爲如果通過創建外鍵來發生該錯誤,數據庫會失去它的完整性,所以不能創建fk。 –

+0

@DamianSimonPeter嘗試了這個appraoch ..沒有工作,看到了這個線程! –

回答

0

嘗試

$table->foreign('tag')->references('id')->on('tags'); 

因爲在tags表,主鍵是id