Php SQLSTATE[42000]:语法错误或访问冲突:1075不正确的表定义;只能有一个自动列,必须将其定义为键

Php SQLSTATE[42000]:语法错误或访问冲突:1075不正确的表定义;只能有一个自动列,必须将其定义为键,php,mysql,laravel,Php,Mysql,Laravel,运行后php artisan迁移 [Illumb\Database\QueryException]SQLSTATE[42000]:语法错误 或访问冲突:1075不正确的表定义;可能有 只有一个自动共列,必须将其定义为键(SQL:create 表jadwal_praks(idint unsigned not null auto_increment 主键,thnajrn\u idint无符号非空自动增量主键 键,prak\u idint无符号非空自动增量主键, hari\u idint无符号非空自动

运行后
php artisan迁移

[Illumb\Database\QueryException]SQLSTATE[42000]:语法错误 或访问冲突:1075不正确的表定义;可能有 只有一个自动共列,必须将其定义为键(SQL:create 表
jadwal_praks
id
int unsigned not null auto_increment
主键,
thnajrn\u id
int无符号非空自动增量主键 键,
prak\u id
int无符号非空自动增量主键,
hari\u id
int无符号非空自动增量主键,
jam\u id
int无符号非numl自动递增主键,
ruang\u id
int 无符号非空自动递增主键,
kap\u id
int无符号
非空自动递增主键,在时间戳为空时创建,
updated_at
timestamp null,
memory_token
v archar(100)null) 默认字符集(utf8对比utf8\U unicode\U ci)

还有这个

[PDOException]SQLSTATE[42000]:语法错误或访问冲突: 1075表格定义不正确;只能有一个自动列和 必须将其定义为密钥


根据我的观察,我认为您应该删除添加到外部字段的
默认值(例如):

致:

PS:有过类似的经验,我知道目前我在Laravel 5.2中的一个项目中也能做到这一点*


希望这有帮助:)

当您使用
$table->integer('thnajrn_id',10)->unsigned()
;这意味着您将第二个参数设置为true,表示自动增量

试试看

$table->integer('thnajrn_id')->unsigned();

当您使用
$table->unsignedbiginger('account_id')->nullable()时
您仍然可以得到相同的错误,因为
nullable()
生成的默认值也会产生相同的错误。因此,请始终将外键保留为空,无论是
null
还是
default(0)

$table->integer('thnajrn_id', 10)->unsigned(); 
$table->integer('thnajrn_id')->unsigned();
table->integer('thnajrn_id')->length(10)->unsigned();