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

时间:2018-04-19 11:10:36

标签: php mysql laravel laravel-5.5

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

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

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

  

“SQLSTATE [23000]:完整性约束违规:1452无法添加或   更新子行:外键约束失败   (trackerusers_auth_tokens,CONSTRAINT   users_auth_tokens_user_id_foreign FOREIGN KEY(user_id)参考   usersid)ON DELETE CASCADE)(SQL:insert into   users_auth_tokensauth_tokenvalidityrefresh_token,   updated_atcreated_at)值   (ETZEI11RY3D7RQE4XR6OBTNQHC6Q1ND187E5FD3E45281D3385D784C3D89C0697D46DDC,   1524135471,b87c88fdcf1eea0a6680620d8da77e4f0ee18b78,2018-04-19   10:52:51,2018-04-19 10:52:51))“

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

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

我的代码就像:

user_id=0

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

感谢。

1 个答案:

答案 0 :(得分:1)

我已通过保存null user_id而不是0来修复此问题。

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

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

感谢您的帮助@JonasStaudenmeir!

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