微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mysql如何处理外键约束失败

如何解决Mysql如何处理外键约束失败

当我尝试将数据添加children表中时。

我遇到了以下错误

我试图找出原因。

插入数据有什么错误吗?

如果有人有意见,请告诉我

谢谢

QueryFailedError: ER_NO_REFERENCED_ROW_2: Cannot add or update a child row: a foreign key constraint fails (`mogucare_db`.`children`,CONSTRAINT `FK_644df4cc525729181dbee86a44d` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

以下是我的数据库状态。

MysqL> select * from children;
Empty set (0.00 sec)

MysqL> select * from users;
Empty set (0.00 sec)
MysqL> desc children;
+--------------+--------------+------+-----+----------------------+----------------+
| Field        | Type         | Null | Key | Default              | Extra          |
+--------------+--------------+------+-----+----------------------+----------------+
| id           | int(11)      | NO   | PRI | NULL                 | auto_increment |
| user_id      | int(11)      | NO   | MUL | NULL                 |                |
| mogu_plus_id | varchar(255) | NO   |     | NULL                 |                |
| first_name   | varchar(255) | NO   |     | NULL                 |                |
| middle_name  | varchar(255) | YES  |     | NULL                 |                |
| last_name    | varchar(255) | NO   |     | NULL                 |                |
| birthday     | date         | NO   |     | NULL                 |                |
| gender       | varchar(255) | NO   |     | NULL                 |                |
| blood_type   | varchar(255) | NO   |     | NULL                 |                |
| class        | varchar(255) | YES  |     | NULL                 |                |
| entrance_day | varchar(255) | YES  |     | NULL                 |                |
| is_active    | int(11)      | NO   |     | NULL                 |                |
| created_at   | datetime(6)  | NO   |     | CURRENT_TIMESTAMP(6) |                |
| updated_at   | datetime(6)  | NO   |     | CURRENT_TIMESTAMP(6) |                |
| deleted_at   | datetime(6)  | YES  |     | NULL                 |                |
+--------------+--------------+------+-----+----------------------+----------------+
15 rows in set (0.01 sec)
MysqL> desc users;
+-------------------+--------------+------+-----+----------------------+----------------+
| Field             | Type         | Null | Key | Default              | Extra          |
+-------------------+--------------+------+-----+----------------------+----------------+
| id                | int(11)      | NO   | PRI | NULL                 | auto_increment |
| password          | varchar(255) | NO   |     | NULL                 |                |
| birthday          | date         | NO   |     | NULL                 |                |
| address           | varchar(255) | NO   |     | NULL                 |                |
| email             | varchar(255) | NO   |     | NULL                 |                |
| gender            | varchar(255) | NO   |     | NULL                 |                |
| height            | varchar(255) | NO   |     | NULL                 |                |
| weight            | varchar(255) | NO   |     | NULL                 |                |
| phone             | varchar(255) | NO   |     | NULL                 |                |
| login_id          | varchar(255) | NO   |     | NULL                 |                |
| first_name        | varchar(255) | NO   |     | NULL                 |                |
| middle_name       | varchar(255) | YES  |     | NULL                 |                |
| last_name         | varchar(255) | NO   |     | NULL                 |                |
| blood_type        | varchar(255) | NO   |     | NULL                 |                |
| language_cd       | int(11)      | NO   |     | NULL                 |                |
| emergency_contact | varchar(255) | YES  |     | NULL                 |                |
| is_admin          | int(11)      | NO   |     | NULL                 |                |
| created_at        | datetime(6)  | NO   |     | CURRENT_TIMESTAMP(6) |                |
| updated_at        | datetime(6)  | NO   |     | CURRENT_TIMESTAMP(6) |                |
| deleted_at        | datetime(6)  | YES  |     | NULL                 |                |
+-------------------+--------------+------+-----+----------------------+----------------+
20 rows in set (0.00 sec)

解决方法

看着您的错误,在我看来,表 Children 在字段 User_Id 上具有外键,该键必须与现有的 ID 相匹配在表 Users

因此,所有操作均应正常进行,如果没有有效引用表 Users 中的行,则不能在表 Children 中输入一行。

因此,首先在表 Users 中创建一个或多个行,然后可以在表 Children 中创建一个引用表中的行之一的行。用户

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。