Это не позволяет мне бросить внешний ключ
Я пытаюсь удалить внешний ключ из таблицы, но я получаю эту ошибку ниже в MySQL:
1025 - Ошибка при переименовании "./mobile_app/Question" в "./mobile_app/#sql2-4517-15515" (номер ошибки: 152)
Что означает эта ошибка и как ее можно исправить?
Ниже приведен код, где я пытаюсь удалить внешний ключ:
alter table Question drop foreign key FK_Option_Table;
Ниже приведены детали таблицы вопросов (в этой таблице нет строк):
CREATE TABLE `Question` (
`SessionId` varchar(10) NOT NULL DEFAULT '',
`QuestionId` int(5) NOT NULL,
`QuestionContent` varchar(5000) NOT NULL,
`NoofAnswers` int(2) NOT NULL,
`AnswerId` int(10) NOT NULL AUTO_INCREMENT,
`ReplyId` varchar(2) NOT NULL,
`QuestionMarks` int(4) NOT NULL,
`OptionId` varchar(3) NOT NULL,
PRIMARY KEY (`SessionId`,`QuestionId`),
KEY `FK_Option_Table` (`OptionId`),
KEY `FK_IndividualQuestion` (`QuestionId`),
KEY `FK_Reply` (`ReplyId`),
KEY `FK_AnswerId` (`AnswerId`)
) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8
Ниже приведены подробности Option_Table:
CREATE TABLE `Option_Table` (
`OptionId` varchar(3) NOT NULL,
`OptionType` varchar(20) NOT NULL,
PRIMARY KEY (`OptionId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
В этой таблице 24 строки, и ниже приведен пример:
OptionId OptionType
O1 A-C
O2 A-D
O3 A-E
O4 A-F
...
1 ответ
Решение
Это индексы, а не внешние ключи у вас есть. Я не вижу внешних ключей в ваших операторах создания.
Пример создания внешнего ключа.
ALTER TABLE `Question`
ADD CONSTRAINT `SessionId`
FOREIGN KEY (`SessionId` )
REFERENCES `Option_Table` (`OptionId` )
ON DELETE NO ACTION
ON UPDATE CASCADE
, ADD INDEX `test_idx` (`SessionId` ASC) ;
ALTER TABLE `Question` DROP FOREIGN KEY `SessionId` ;