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

问题描述 投票:0回答:1

我正在使用Laravel 5.5。我准备好了数据库,我有2个表。 1)users 2)users_auth_tokens目前在users表中没有填写任何数据。

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

但不幸的是,当我试图用user_id=0插入记录时,它给我的错误如下:

“SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(tracker.users_auth_tokens,CONSTRAINT users_auth_tokens_user_id_foreign FOREIGN KEY(user_id)REFERENCES usersid)ON DELETE CASCADE)(SQL:insert into users_auth_tokensauth_tokenvalidityrefresh_tokenupdated_atcreated_at)值(ETZEI11RY3D7RQE4XR6OBTNQHC6Q1ND187E5FD3E45281D3385D784C3D89C0697D46DDC,1524135471,b87c88fdcf1eea0a6680620d8da77e4f0ee18b78,2018年4月19日10时52分51秒,2018年4月19日10时52分51秒))”

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

无论如何,我想在该表中插入user_id=0。我在谷歌搜索一些技巧,但没有人帮助。

我的代码是这样的:

$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();

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

谢谢。

php mysql laravel laravel-5.5
1个回答
1
投票

我已经通过保存null user_id来修复它,但没有使用0

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

我试图保存user_id=0但没有运气,我用null值修复它!

感谢您的帮助@JonasStaudenmeir!

希望如果他们面临同样的问题,这将有助于未来的任何其他用户!

© www.soinside.com 2019 - 2024. All rights reserved.