[英]Error: Cannot add or update a child row: a foreign key constraint fails?
Error: Cannot add or update a child row: a foreign key constraint fails? 错误:无法添加或更新子行:外键约束失败? (
testlogin
.leavetable
, CONSTRAINTleavetable_ibfk_1
FOREIGN KEY (testlogin
。leavetable
,约束leavetable_ibfk_1
FOREIGN KEY
(users_id
) REFERENCESusers
(id
) ON DELETE CASCADE ON UPDATE CASCADE) (users_id
)参考users
(id
)删除users_id
Been getting this message for the last day and a half. 在过去的一天半里一直收到此消息。 Trying to make a one to many (foreign key) relationship between the two tables. 试图在两个表之间建立一对多(外键)关系。 Between users:id
and leavetable:users_id
. 在users:id
和leavetable:users_id
。 When user logs in they get a id. 用户登录时会获得一个ID。 when they submit a form to column hours
I'd like for the id to stay with the form data. 当他们向专栏hours
提交表单hours
我希望ID保留在表单数据中。 It is throwing the error when someone creates a new id number and it wont update the leavetable:user_id
. 当有人创建一个新的ID号时,它将leavetable:user_id
错误,并且不会更新leavetable:user_id
。 It throws the error above. 它引发上面的错误。
Here's my code: 这是我的代码:
CREATE TABLE IF NOT EXISTS `users` (
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`id` int(11) NOT NULL,
`password` char(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`salt` char(16) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `leavetable` (
`hours` int(11) NOT NULL,
`users_id` int(11) DEFAULT NOT NULL,
`id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `users`
ADD PRIMARY KEY (`id`) USING BTREE,
ADD UNIQUE KEY `email` (`email`) USING BTREE,
ADD UNIQUE KEY `username` (`username`) USING BTREE;
ALTER TABLE `leavetable`
ADD PRIMARY KEY (`id`) USING BTREE,
ADD KEY `users_id` (`users_id`) USING BTREE;
ALTER TABLE `leavetable`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
-- AUTO_INCREMENT for table `users`
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `leavetable`
ADD CONSTRAINT `leavetable_ibfk_1` FOREIGN KEY (`users_id`) REFERENCES
`users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
my table structure: 我的表结构:
+---------------------+
| Tables_in_testlogin |
+---------------------+
| leavetable |
| users |
+---------------------+
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| email | varchar(255) | NO | UNI | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| password | char(64) | NO | | NULL | |
| salt | char(16) | NO | | NULL | |
| username | varchar(255) | NO | UNI | NULL | |
+----------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
+----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+----------------+
| hours | int(11) | NO | | NULL | |
| users_id | int(11) | NO | MUL | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
+----------+---------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
首先,您必须清除子表的数据,然后清除mastertable之间的外键,之后您才能清除任何数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.