我使用此设置进行了迁移:
$table->increments('id');
$table->integer('user_id', 10)->unsigned(); // this is meant to be used as a foreign key
执行php artisan migrate后,它会返回错误:
[Exception]
SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition;
there can be only one auto column and it must be defined as a key (SQL: create table `transactions` (`id` int unsigned not null auto_increment primary key, `user_id` int unsigned not null auto_increment primary key) default character set utf8 collate utf8_unicode_ci) (Bindings: array ())
我没有将user_id指定为auto_increment主键,但是Migration会将其视为。
如何在迁移中创建外键?
答案 0 :(得分:21)
@crynobone:第二个参数用于布尔值确定主键,整数没有长度选项。
请参阅此处:https://github.com/laravel/laravel/issues/2212#issuecomment-21608193
答案 1 :(得分:3)
在Laravel 4中,整数函数中的第二个参数用于指示整数列是否自动递增(因此是否为主键) 在我的例子中,要在表中添加一个自动递增的id,我就像那样写
$table->integer('id' , true);
它创建一个11位的整数列。
答案 2 :(得分:-2)
为什么不指定user_id
作为自动增量的主键?
$table->increments('user_id');
// other columns
...
架构构建器创建user_id
,长度为10位,无符号&主键。