2017-02-09 149 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。 在自公园这种情况下,依赖于用户表,只需重命名用户和公园表的创建日期之前更改创建日期的任何日期。