Php 拉威尔6。常规错误:1215无法添加外键约束

Php 拉威尔6。常规错误:1215无法添加外键约束,php,laravel,Php,Laravel,将数据库表引擎定义为innoDB后,我正在浏览下面的错误消息。我尝试了那里的一切,但都不起作用。可以看出,我正在使用biginger和unsignedbiginger作为我的列类型 错误 illumb\Database\QueryException:SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter tableusersadd约束users\u account\u status\u id\u foreign外键(account\u status\u id)引用

将数据库表引擎定义为innoDB后,我正在浏览下面的错误消息。我尝试了那里的一切,但都不起作用。可以看出,我正在使用
biginger
unsignedbiginger
作为我的列类型

错误

illumb\Database\QueryException:SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter table
users
add约束
users\u account\u status\u id\u foreign
外键(
account\u status\u id
)引用
状态
id
)删除时设置为空更新级联)


我认为您的模式生成器无法创建外键约束,因为尚未创建STATUSES表


尝试反转迁移顺序(更改构成迁移文件名第一部分的日期,使其符合您想要的顺序(例如,对于2020_01_09_134109_create_users_table.php,日期和时间为2020-01-29,13:41:09)


再次运行迁移。

我认为架构生成器无法创建外键约束,因为尚未创建状态表


尝试反转迁移顺序(更改构成迁移文件名第一部分的日期,使其符合您想要的顺序(例如,对于2020_01_09_134109_create_users_table.php,日期和时间为2020-01-29,13:41:09)


再次运行迁移。

您可能没有正确定义用户表上的实际外键字段。在指定
外键之前,我希望看到如下情况:

$table->unsignedBigInteger('account_status_id');  // No default 0
$table->foreign('account_status_id')->references('id')->on('statuses')->onUpdate('cascade')->onDelete('set null');
请注意,
->缺省值(0)
的丢失,因为这将对可空字段产生问题


.

您可能没有正确定义用户表上的实际外键字段。在指定
外键之前,我希望看到如下情况:

$table->unsignedBigInteger('account_status_id');  // No default 0
$table->foreign('account_status_id')->references('id')->on('statuses')->onUpdate('cascade')->onDelete('set null');
请注意,
->缺省值(0)
的丢失,因为这将对可空字段产生问题



.

如何保留迁移顺序?更改构成迁移文件名第一部分的日期,使其符合您想要的顺序(例如,对于2020\u 01\u 09\u 134109\u create\u users\u table.php,日期和时间是2020-01-29,13:41:09I更改了
2019\u 12\u 16\u 060000\u create\u users\u table.php
2019\u 12\u 15\u 053624\u create\u status\u table.php
,以便状态迁移首先运行,但仍然面临相同的问题您是否从数据库中删除所有表并尝试过php artisan迁移:freshYes,我正在运行
php artisan migate:fresh
如何保留迁移顺序?更改构成迁移文件名第一部分的日期,使其符合您想要的顺序(例如,对于2020\u 01\u 09\u 134109\u create\u users\u table.php,日期和时间是2020-01-29,13:41:09I更改了
2019\u 12\u 16\u 060000\u create\u users\u table.php
2019\u 12\u 15\u 053624\u create\u status\u table.php
,以便状态迁移首先运行,但仍然面临相同的问题您是否从数据库中删除所有表并尝试过php artisan迁移:freshYes,我正在运行
php artisan migate:fresh
我已经定义了外键
$table->unsignedBigInteger('account\u status\u id')->default(0)
但是,请尝试不使用默认值-您不能让FK与0匹配-它不能匹配。可以为Nullable,但0可能会对cascade Null造成严重破坏没有更改。这让我现在感到恶心:)。一切看起来都很好,但这个疯狂的错误一直提示我:)这两个表都在运行innoDB吗?正如您所说,我删除了onDelete,迁移运行成功。感谢您的帮助,我已经定义了外键
$table->unsignedBigInteger('account\u status\u id')->默认值(0)
但是,请尝试不使用默认值-您不能让FK与0匹配-它不能匹配。可以为Nullable,但0可能会对cascade Null造成严重破坏没有更改。这让我现在感到恶心:)。一切看起来都很好,但这个疯狂的错误一直提示我:)这两个表都在运行innoDB吗?我删除了您提到的onDelete,迁移运行成功。非常感谢