一般错误:1005无法创建表格

时间:2016-04-05 20:55:42

标签: mysql laravel eloquent laravel-5.2

当我运行php artisan migrate时,我不断收到此错误:

  

[照亮\数据库\ QueryException]        SQLSTATE [HY000]:常规错误:1005无法创建表binomi#sql-3910_c0b        (错误:150"外键约束形成错误")        (SQL:alter table users添加约束users_activity_foreign foreign        密钥(activity)在删除级联上引用activityid)        [PDOException]        SQLSTATE [HY000]:常规错误:1005无法创建表binomi#sql-3910_c0b        (错误:150"外键约束形成错误")

以下是我的用户和活动模型的架构,这些是应用中唯一的型号。

用户迁移:

Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->integer('activity');
        $table->rememberToken();
        $table->timestamps();
    });

  Schema::table('users', function($table){
      $table->foreign('activity')->references('id')->on('activity')->onDelete('cascade');
     }

活动迁移:

 Schema::create('activty', function (Blueprint $table) {
        $table->increments('id');
        $table->string('label');
    });

3 个答案:

答案 0 :(得分:2)

unsigned()修饰符添加到外键列:

Schema::create('users', function (Blueprint $table) {
        ...
        $table->integer('activity')->unsigned();
        $table->rememberToken();
        $table->timestamps();
    });

答案 1 :(得分:1)

您的活动表有拼写错误,在架构创建中显示activty。另外,我建议将其重命名为activities,除非你只有一个。

答案 2 :(得分:0)

increments()自动指定为无符号。

因此,请确保在下面的代码中添加unsigned:

$table->integer('activity')->unsigned(); 

还要检查是否输了错误