我正在尝试在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 tableusers
add 约束users_practice_id_foreign外键(practice_id
) 引用gp
(id
))(绑定:数组(
))
答案 0 :(得分:0)
err 150
很可能是数据类型不匹配。
将foregin键作为users
表中的unsigned int进行delcare:
$table->integer('practice_id')->unsigned();
同时验证您的数据库引擎是否支持FK约束的INNODB