Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
外键约束格式不正确,Laravel_Laravel_Laravel 7 - Fatal编程技术网

外键约束格式不正确,Laravel

外键约束格式不正确,Laravel,laravel,laravel-7,Laravel,Laravel 7,我试图迁移数据库,但我得到了一个错误,我不知道为什么。不确定什么是“格式错误” SQLSTATE[HY000]:一般错误:1005无法创建表anime\u dblkp\u卡(错误号:150“外键约束格式不正确”)(SQL:alter tablelkp\u卡添加约束lkp\u卡通列表id\u外键(lkp\u anime\u列表id)参考资料lkp\u anime\u列表(id)在删除级联中) 你应该使用 $table->unsignedBigInteger('lkp_anime_list_i

我试图迁移数据库,但我得到了一个错误,我不知道为什么。不确定什么是“格式错误”

SQLSTATE[HY000]:一般错误:1005无法创建表
anime\u db
lkp\u卡
(错误号:150“外键约束格式不正确”)(SQL:alter table
lkp\u卡
添加约束
lkp\u卡通列表id\u外键(
lkp\u anime\u列表id
)参考资料
lkp\u anime\u列表
id
)在删除级联中)

你应该使用

$table->unsignedBigInteger('lkp_anime_list_id')
相反,由于主键和外键应在相同的数据类型中,因此应使用

$table->unsignedBigInteger('lkp_anime_list_id')
相反,因为主键和外键应该在相同的数据类型中,这对我来说很有用

$table->bigInteger('lkp_anime_list_id')->unsigned();
对于Laravel版本6+

这对我来说很有用

$table->bigInteger('lkp_anime_list_id')->unsigned();

对于Laravel版本6+

,因为
lkp\u卡。lkp\u动画列表\u id
未签名,而
lkp\u动画列表。id
未签名。因此,要么删除
->unsigned()
,要么将其添加到上面的
$table->id()
列表中,最初没有,但我重新测试了,得到了相同的错误。编辑您的帖子,在两列签名匹配的情况下显示代码。好的,我这样做了。新版本的Laravel使
id()
函数别名为
大增量
,因此您还需要更改
$table->integer('lkp\u anime\u list\u id')
$table->biginger('lkp\u anime\u list\u id')因为
lkp\u cards.lkp\u anime\u list\u id
未签名,而
lkp\u anime\u list.id
未签名。因此,要么删除
->unsigned()
,要么将其添加到上面的
$table->id()
列表中,最初没有,但我重新测试了,得到了相同的错误。编辑您的帖子,在两列签名匹配的情况下显示代码。好的,我这样做了。新版本的Laravel使
id()
函数别名为
大增量
,因此您还需要更改
$table->integer('lkp\u anime\u list\u id')
$table->biginger('lkp\u anime\u list\u id')这就是答案,谢谢!但是您可以告诉我为什么在其他一些列上只使用“integer”?可能是因为您使用“increments()”方法创建了主键,该方法是unsignedInteger。但是现在您开始使用“id()”方法,它是unsignedbigInteger这就是答案,谢谢!但是您可以告诉我为什么在其他一些列上只使用“integer”?可能是因为您使用“increments()”方法创建了主键,该方法是unsignedInteger。但是现在您开始使用“id()”方法,它是unsignedbiginger