Laravel 4 Migration错误 - 创建两个auto_increment主键字段

时间:2013-07-26 08:25:38

标签: laravel laravel-4 database-migration

我使用此设置进行了迁移:

$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会将其视为。

如何在迁移中创建外键?

3 个答案:

答案 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位,无符号&主键。