11

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

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

如何在迁移中创建外键?

4

3 回答 3

21

@crynobone:第二个参数用于确定主键的布尔值,整数没有长度选项。

参考这里:https ://github.com/laravel/laravel/issues/2212#issuecomment-21608193

于 2013-07-26T08:45:40.403 回答
3

在 Laravel 4 中,整数函数中的第二个参数用于指示整数列是否自动递增(因此主键与否)在我的情况下,要在表中添加自动递增的 id,我这样写

$table->integer('id' , true);

它创建一个包含 11 位数字的整数列。

于 2013-09-18T12:23:42.253 回答
-2

为什么不user_id使用自动增量指定为主键?

$table->increments('user_id');
// other columns
...

Schema builder create user_id,长度为 10 位,无符号和主键。

于 2013-07-26T10:31:46.100 回答