2012-05-13 154 views
0

首先,我知道有很多关于这个主题的帖子,但我检查的人没有帮助我,所以我想发布我的问题。Mysql:无法添加或更新子行:外键约束失败

我正在建立一个网站,人们可以注册为用户,然后为我填写一些不同的表格。我有2个表格是“用户”,另一个是“表格”表格。在用户表中我有user_id是auto_incremented和这个ID连接到“表格”作为外键。我想通过user_id查看哪些用户填写了表单。当我尝试向数据库注册填充表单时,我得到“无法添加或更新子行:外键约束失败”消息。我怎样才能解决这个问题?

回答

0

如果您已将表单上的user_id设置为指向用户表中user_id的外键,则在插入表单行时必须提供有效的user_id。

您可以将表格表上的user_id字段设置为NULL,这意味着它不必设置。

+0

ALTER TABLE'form' CHANGE''user_id' INT user_id'(5)NOT NULL DEFAULT NULL MySQL的输出: #1067 - 'user_id'的默认值无效 – Semih

+0

“NOT NULL DEFAULT NULL”这对我来说看起来不正确。如果您可以粘贴表格结构并查询您尝试插入/更新它的表格,则更好。 –

+0

的mysql_query(“CREATE TABLE kullanici( \t USER_ID INT(5)NULL, \t USER_NAME VARCHAR(30)NOT NULL, 密码VARCHAR(16)NOT NULL, \t E_MAIL VARCHAR(25)NOT NULL, \t Skype_name VARCHAR(16)NOT NULL, \t \t PRIMARY KEY(user_name,user_id))“); \t \t 的mysql_query(“CREATE TABLE形式( FORM_NAME VARCHAR(20)NULL, form_id INT(2)NULL, 库勒INT(2)NOT NULL, Silahhane INT(2)NULL, 汉INT (2)NULL, Kutuphane int(2)NULL, )“);我不直接在phpmyadmin中添加外键。 – Semih

0

您正在尝试将一些数据添加到您的外键列中,而其他表中没有相同的数据。

+0

它是假设从用户表中自动获取user_id,因为它是外键,不是吗? – Semih

0

这种情况多发生当存在表数据和您要创建/编辑/删除foreign_key

要让它foreign_key字段不符合表字段相同的格式

解决方案:
你必须让你的数据
2的
1)备份或复制)删除foreign_keys
3),从表 截断数据4)最后再附上foreign_keys
5)更新数据

我希望它能帮助

相关问题