如何解决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 举报,一经查实,本站将立刻删除。