Laravel 4 迁移错误 - 创建两个 auto_increment 主键字段
Posted
技术标签:
【中文标题】Laravel 4 迁移错误 - 创建两个 auto_increment 主键字段【英文标题】:Laravel 4 Migration error - creates two auto_increment primary keys fields 【发布时间】:2013-07-26 10:28:32 【问题描述】:我使用此设置进行了迁移:
$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 将其视为这样。
如何在 Migrations 中创建外键?
【问题讨论】:
【参考方案1】:在 Laravel 4 中,整数函数中的第二个参数用于指示整数列是否自动递增(因此主键与否) 就我而言,要在表中添加自动递增的 id,我会这样写
$table->integer('id' , true);
它创建一个 11 位的整数列。
【讨论】:
【参考方案2】:为什么不将 user_id
指定为具有自动增量功能的主键?
$table->increments('user_id');
// other columns
...
架构生成器创建 user_id
,它是 10 位长、无符号和主键。
【讨论】:
【参考方案3】:@crynobone:第二个参数用于布尔值确定主键,整数没有长度选项。
参考这里:https://github.com/laravel/laravel/issues/2212#issuecomment-21608193
【讨论】:
那么外键怎么处理? nvm,在这里找到答案***.com/questions/22077573/… 你应该使用 $table->integer('app_group_id')->length(10)->unsigned();在 Laravel 4 中以上是关于Laravel 4 迁移错误 - 创建两个 auto_increment 主键字段的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.7 迁移错误:SQLSTATE[HY000] [2002] No such file or directory