laravel:sqlstate[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败

daolsyd0  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(465)

我用的是拉威尔5.5。我已经准备好了我的数据库和两个表。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 ,约束 users_auth_tokens_user_id_foreign 外键( user_id )参考文献 users ( id )删除时(sql:insert-into) users_auth_tokens ( auth_token , validity , refresh_token , updated_at , created_at )值(etzei11ry3d7rqe4xr6obtnqhc6q1nd187e5fd3e45281d3385d784c3d89c0697d46ddc,1524135471,b87c88fdcf1ee0a6680620d8da77e4f0ee18b78,2018-04-19 10:52:51,2018-04-19 10:52:51))
我知道为什么会发生这个错误,因为有外键 user_idusers_auth_tokens 而且里面没有任何记录 users 现在就坐!我尝试过使用迁移中的默认0值,并使其也可以为null,但没有成功。
不管怎样,我想插入 user_id=0 在那张table上。我在谷歌上搜索了一些技巧,但没人帮忙。
我的代码是这样的:

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

有人能解决这个问题吗?任何帮助都将不胜感激!!
谢谢。

z18hc3ub

z18hc3ub1#

我已经用储蓄解决了 null 用户id,但不是 0 .
我需要做点什么 ->nullable() 在迁移文件中,当我保存记录时,我还需要保存 null 价值观!
我想救你 user_id=0 但是运气不好,我已经把它修好了 null 价值观!
谢谢你的帮助@jonasstaudenmeir!
希望这将有助于任何其他用户在未来,如果他们面临同样的问题!

相关问题