Я создавал базу данных, создавая 3 таблицы (classes, lectures, taking
), а затем изменяя таблицу, чтобы добавить foreign key
.
Однако я продолжаю получать следующую ошибку: ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint
Я не вижу никаких проблем с кодами, так в чем может быть проблема?? (Я использовал mySQL Workbench. Я пытался копировать и вставлять в виде txt-файла, потому что я думал, что это может быть проблема с сопоставлением, но все же возникала та же проблема)
Код выглядит следующим образом:
CREATE TABLE classes (
course_id VARCHAR(8),
classes_id VARCHAR(10),
semester VARCHAR(10),
year VARCHAR(10),
PRIMARY KEY (course_id, classes_id, semester, year)
);
CREATE TABLE taking (
student_id VARCHAR(8),
course_id VARCHAR(10),
classes_id VARCHAR(10),
semester VARCHAR(10),
year VARCHAR(10),
grade char(1),
PRIMARY KEY (student_id, course_id, semester, year)
);
CREATE TABLE lectures (
professor_id VARCHAR(8),
course_id VARCHAR(10),
classes_id VARCHAR(10),
semester VARCHAR(10),
year VARCHAR(10),
PRIMARY KEY (professor_id, course_id, semester, year)
);
ALTER TABLE taking ADD CONSTRAINT consTAKE3 FOREIGN KEY(classes_id) REFERENCES classes(classes_id) ON DELETE CASCADE;
ALTER TABLE taking ADD CONSTRAINT consTAKE4 FOREIGN KEY(semester) REFERENCES classes(semester) ON DELETE CASCADE;
ALTER TABLE taking ADD CONSTRAINT consTAKE5 FOREIGN KEY(year) REFERENCES classes(year) ON DELETE CASCADE;
ALTER TABLE lectures ADD CONSTRAINT consLEC3 FOREIGN KEY(classes_id) REFERENCES classes(classes_id) ON DELETE CASCADE;
ALTER TABLE lectures ADD CONSTRAINT consLEC4 FOREIGN KEY(semester) REFERENCES classes(semester) ON DELETE CASCADE;
ALTER TABLE lectures ADD CONSTRAINT consLEC5 FOREIGN KEY(year) REFERENCES classes(year) ON DELETE CASCADE;
Ошибка будет выглядеть следующим образом:
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint 'consTAKE3' in the referenced table 'classes'
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint 'consTAKE4' in the referenced table 'classes'
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint 'consTAKE5' in the referenced table 'classes'
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint 'consLEC3' in the referenced table 'classes'
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint 'consLEC4' in the referenced table 'classes'
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint 'consLEC5' in the referenced table 'classes'
Прямо сейчас я пытаюсь выполнить это из cmd
, используя ysql –u root –p
. Тем не менее, возникает та же проблема.