迁移层5.1中的外键错误

时间:2015-11-09 13:53:04

标签: php foreign-keys laravel-5.1 mysql-error-1064

我已迁移此代码

 public function up()
{
    Schema::create('TechnicianGroup', function(Blueprint $table){
        $table->increments('id')->unsigned();
        $table->string('name', 255);
        $table->string('description', 64);
        $table->string('token', 255);
        $table->timestamps();
    });
    Schema::create('Site', function(Blueprint $table){
        $table->increments('id');
        $table->string('name', 255);
        $table->string('token', 255);
        $table->timestamps();
    });
    Schema::create('technician', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name', 50);
        $table->string('username', 50);
        $table->string('password', 255);
        $table->string('email', 255);
        $table->string('mobile', 11);
        $table->string('avatar_url', 256);
        $table->string('job_title', 100);
        $table->integer('site_id');
        $table->foreign('site_id')->references('id')->on('site')->onDelete('cascade');
        $table->integer('group_id');
        $table->boolean('is_active');
        $table->string('token', 255);
        $table->timestamps();
    });

}

当我执行migarate时

php artisan migrate

结果是

  

[照亮\数据库\ QueryException]   SQLSTATE [HY000]:常规错误:1005无法创建表'upport。#sql-a3c_140'(错误号:150)(SQL:alter table technician添加约束technician_site_id_foreign外键(site_id)referen   ces siteid))   [PDOException]   SQLSTATE [HY000]:常规错误:1005无法创建表'upport。#sql-a3c_140'(错误号:150)

1 个答案:

答案 0 :(得分:1)

您忘了使用unsigned()。如果您不使用unsinged(),则该列将为int(11),但您需要int(10)

site.idtechnician.site_id必须是同一类型:int(10)

试试这个:

$table->foreign('site_id')->unsigned()->references('id')->on('site')->onDelete('cascade');