通过迁移添加时出现外键约束错误

时间:2013-11-07 22:01:31

标签: foreign-keys migration laravel-4

我正在尝试在Laravel 4,User和GP上的两个表之间创建外键约束。用户可以与许多GP相关联。外键是users表中的'Practice_ID',它与GP表中的ID相关联。

    public function up()
{

    // Creates GP table
    Schema::create('gp', function($ta)
    {
        $ta->bigIncrements('id');
        $ta->string('address_1');
        $ta->string('address_2');
        $ta->string('address_3');
        $ta->string('post_code');
        $ta->timestamps();
    });

    // Creates the users table
    Schema::create('users', function($table)
    {
        $table->increments('id');
        $table->string('username');
        $table->string('email');
        $table->string('password');
        $table->string('confirmation_code');
        $table->boolean('confirmed')->default(false);
        $table->bigInteger('practice_id');
        $table->foreign('practice_id')->references('id')->on('gp');
        $table->timestamps();
    });

    // Creates password reminders table
    Schema::create('password_reminders', function($t)
    {
        $t->string('email');
        $t->string('token');
        $t->timestamp('created_at');
    });

}

我得到的错误是:

  

[异常]
  SQLSTATE [HY000]:常规错误:1005无法创建表   'doctor。#sql-3ac_a4'(错误号:150)(SQL:alter table users add   约束users_practice_id_foreign外键(practice_id)   引用gpid))(绑定:数组(
  ))

1 个答案:

答案 0 :(得分:0)

err 150很可能是数据类型不匹配。

将foregin键作为users表中的unsigned int进行delcare:

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

同时验证您的数据库引擎是否支持FK约束的INNODB