Greetings. When I execute the SQL script below in mySQL 4.1, I get ERROR 1216: Cannot add or update a child row: a foreign key constraint fails
It is, of course, choking on the enroll row insert. Why is this happening? Here are some things that make the problem go away: 1. Take out the "name VARCHAR(30)" attribute from student OR change the type to CHAR(30): In Section 6.5.3.1 (second bullet), it says that if one attribute is variable length, all attributes "silently" become variable length. Does this mean student.sid is really a VARCHAR? Could this be related to the problem? 2. Change type of enroll.sid to VARCHAR(5). 3. Change "Earl" to "Early" My theory: student.sid get "silently changed" from CHAR to VARCHAR since student.name is VARCHAR; however, enroll.sid does not change because there are no variable length fields in enroll. This means that enroll.sid = "Earl " student.sid = "Earl" Consequently, there is no match. Note that I did try specifying a length for the index on sid (i.e., "INDEX sidindex (sid(5)),") but that didn't help. Even shortening to 4 doesn't help, which doesn't jive with my cohersion theory, assuming I understand the index length specification. Ideas? Thanks in advance! CREATE TABLE student ( sid CHAR(5) PRIMARY KEY, name VARCHAR(30) ); CREATE TABLE course ( cid CHAR(5) PRIMARY KEY, name CHAR(20) ); CREATE TABLE enroll ( cid CHAR(5) NOT NULL, sid CHAR(5) NOT NULL, PRIMARY KEY(cid, sid), INDEX sidindex (sid), FOREIGN KEY (sid) REFERENCES student(sid), FOREIGN KEY (cid) REFERENCES course(cid) ); INSERT INTO student VALUES ('Earl', 'Earl Jones'); INSERT INTO course VALUES ('BRTLT', 'British Literature'); INSERT INTO enroll VALUES ('BRTLT', 'Earl'); __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]