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

标签 php mysql laravel laravel-5.5

我使用的是 Laravel 5.5。我已经准备好数据库,并且有 2 个表。 1) users 2) users_auth_tokens 目前 users 表中没有填写任何数据。

所以,我的要求是任何第三个用户第一次调用 api 来获取 Android 设备的 refreshToken ,我将插入数据('auth_token', '调用时将刷新_token''token_validity')写入到users_auth_tokens表中。有一个字段 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表中目前没有任何记录!我尝试过使用迁移中的默认 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();

有人有办法解决这个问题吗?任何帮助将不胜感激!!

谢谢。

最佳答案

我已通过保存 null user_id 修复了该问题,但未使用 0 修复了该问题。

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

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

感谢您的帮助@JonasStaudenmeir!

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

关于php - Laravel:SQLSTATE [23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49919636/

相关文章:

javascript - onchange 在 IE 上不起作用,但在 Chrome 和 FF 上完美触发

WordPress theme-functions.php 中的 PHP 和 MYSQL 脚本用于提取和回显数据

php - 需要有关 php 和 mysql 中查询嵌套循环的帮助吗?

php - 在 magento 的左侧栏中显示类别

java - 无法使用 JDBC 连接器连接到 MySQL

mysql - 如何向该查询添加附加条件(使用 CASE)?

php - 用于查找数据树节点之间路径的高效代码

php - 用逗号(,)将数组数据存储到字符串中

php - DOMPDF loadView() 错误 - undefined variable : data

laravel - Laravel 如何处理 "out of order"发生的迁移?