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 的帮助!
希望这对将来遇到同样问题的任何其他用户有所帮助!
我正在使用 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
, CONSTRAINTusers_auth_tokens_user_id_foreign
FOREIGN KEY (user_id
) REFERENCESusers
(id
) ON DELETE CASCADE) (SQL: insert intousers_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 的帮助!
希望这对将来遇到同样问题的任何其他用户有所帮助!