0

完整的错误信息是:

无法添加或更新子行:外键约束失败 ( jpangil2/ACCOUNT, CONSTRAINT ACCOUNT_ibfk_1FOREIGN KEY ( STU_GNUMBER) REFERENCES STUDENT( STU_GNUMBER))

有问题的两张桌子是学生:

mysql> CREATE TABLE STUDENT -> (STU_GNUMBER INT(8) PRIMARY KEY, -> STU_LNAME CHAR(50), -> STU_FNAME CHAR(50), -> STU_EMAIL CHAR(50), -> STU_DOB DATE, -> STU_PHONE CHAR( 10), -> DEP_ID INT(8) -> 外键(DEP_ID) -> REFERENCES DEPENDENT(DEP_ID));

和帐户:

mysql> CREATE TABLE ACCOUNT -> (ACC_NUMBER INT(8) PRIMARY KEY, -> STU_GNUMBER INT(8), -> PO_NUMBER INT(8), -> SL_NUMBER INT(8), -> TU_NUMBER INT(9), -> BSS_NUMBER INT(8), -> MHA_NUMBER INT(8), -> FOREIGN KEY(STU_GNUMBER) REFERENCES STUDENT(STU_GNUMBER) );

例如,当我尝试在 ACCOUNT 表和带有 (12345678) 的列“STU_GNUMBER”中添加记录时,我收到上述错误消息。我在这个网站上到处寻找类似的问题,但我找到的答案是关于 PHP、show create table 和其他命令,以及我的新手无法理解的其他高级 SQL 逻辑。我通过 Secure Shell 和 VPN 使用我大学的 MySQL,所以我看不出这些 PHP 答案对我有什么帮助。:/

我已经在网上从其他人那里得到了帮助,但没有运气,但是是否有人可以帮助我,因为我无法理解一些更高级别的 SQL 命令和逻辑,所以不会在每篇文章中都屈尊我或击败我?谢谢你,我对那些这样做的人表示最诚挚的感谢。

4

1 回答 1

0

使用您提供的表,account引用 a student- 您不能拥有引用的帐户(= 具有stu_gnumber不存在的值。这是在表上声明的外键的含义。

为了在 中插入新行account,您必须有一个有效值stu_gnumber- 可以是您通过查询表检索到的预先存在的值,或者在将新记录插入到之前插入新记录account(例如,如果您的应用程序是创造一个新的studentaccount在一起)。

请注意,此问题与您正在使用的 ssh 无关 - 它来自底层表结构和您insert的 s 的顺序,而与传输层的细节无关。

于 2013-11-11T06:49:49.307 回答