Laravel:SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败

Laravel: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails

我正在使用 Laravel 5.5。我已经准备好我的数据库,并且有 2 个 table。 1) users 2) users_auth_tokens users table 暂无数据

所以,我的要求是任何第三个用户第一次调用 api 为 android 设备获取 refreshToken,我将插入数据('auth_token''refresh_token', 'token_validity') 调用时变成 users_auth_tokens table。有一个字段 user_id 我想在第一次 api 调用时插入 '0' 并且当任何用户在登录后调用 api 时,我想更新相同的记录(这是user_id=0) 与登录 user_id

但不幸的是,当我尝试使用 user_id=0 插入记录时,出现如下错误:

"SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (tracker.users_auth_tokens, CONSTRAINT users_auth_tokens_user_id_foreign FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE) (SQL: insert into users_auth_tokens (auth_token, validity, refresh_token, updated_at, created_at) values (ETZEI11RY3D7RQE4XR6OBTNQHC6Q1ND187E5FD3E45281D3385D784C3D89C0697D46DDC, 1524135471, b87c88fdcf1eea0a6680620d8da77e4f0ee18b78, 2018-04-19 10:52:51, 2018-04-19 10:52:51))"

我知道为什么会出现这个错误,因为 users_auth_tokens 中有外键 user_id 而现在 users table 中没有任何记录!我尝试使用迁移中的默认 0 值并使其也可以为空,但没有成功。

无论如何我想在 table 中插入 user_id=0。我在 google 上搜索了一些技巧,但没有人提供帮助。

我的代码是这样的:

$usersAuthTokens = new UsersAuthTokens;
$usersAuthTokens->auth_token = $authToken;
$usersAuthTokens->validity = $time;
$usersAuthTokens->refresh_token = $newRefreshToken;
$usersAuthTokens->user_id = 0;  //error is here..because no record in users table right now
$usersAuthTokens->save();

有人对此有解决方案吗?任何帮助将不胜感激!!

谢谢。

我通过保存 null user_id 修复了它,但没有使用 0.

我需要在迁移文件中制作->nullable(),并且在保存记录时,我还需要保存null值!

我试图保存 user_id=0 但没有成功,我已经用 null 值修复了它!

感谢@JonasStaudenmeir 的帮助!

希望这对将来遇到同样问题的任何其他用户有所帮助!