gpt4 book ai didi

mysql - 错误号 : 150 "Foreign key constraint is incorrectly formed" when trying to create a foreing key

转载 作者:行者123 更新时间:2023-11-29 06:49:36 26 4
gpt4 key购买 nike

我有两张 table - UsersPoints 。在 Points我想要以下列:id、points、user_id(外键)。

为此,我按以下顺序执行了以下操作:

创建的迁移看起来像这样:

public function up()
{
Schema::create('points', function (Blueprint $table) {
$table->increments('id');
$table->integer('points')->unsigned();
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('user');
});
}

运行迁移后,出现以下错误:

[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1005 Can't create table logos.#sql-3da4_79a (errno: 150 "Foreign key constraint is incorrectly formed ") (SQL: alter table points add constraint points_user_id_foreign foreign key (user_id) references user (id))

[Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000]:常规 错误:1005 无法创建表 logos#sql-3da4_79a (错误号:150 “外键约束格式不正确”)

[PDOException] SQLSTATE[HY000]:一般错误:1005 无法创建 表logos#sql-3da4_79a (errno: 150 "外键约束是 格式错误")

之后,我将这个关系添加到 users :

 public function points()
{
return $this->hasOne('App\Points');
}

这种关系与points :

 public function user()
{
return $this->hasOne('App\User', 'user_id');
}

然后我专门为外键添加了另一个迁移(因为先前的迁移尽管出现错误但还是创建了表及其列):

   public function up()
{
Schema::table('points', function (Blueprint $table) {

$table->foreign('user_id')->references('id')->on('user');

});
}

运行迁移后,我遇到了与第一次相同的错误。我知道这个错误似乎是“不言自明的”,但老实说,它对我来说没有任何意义。我只是按照官方文档进行操作,我不明白为什么会出现此错误。

有人可以解释一下并帮助我解决问题吗?

干杯!

最佳答案

首先,请确保在运行迁移之前创建用户的时间戳!

所以用户应该先迁移,然后再积分。因为您想在尝试声明外来 key 之前确保您已经拥有用户表!

那么您的foreign语句中有一个拼写错误 它应该是 users 而不是 user ,如下所示:

$table->foreign('user_id')->references('id')->on('users');

关于mysql - 错误号 : 150 "Foreign key constraint is incorrectly formed" when trying to create a foreing key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48034644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com