@Ingco

Как удалить ограничение FOREIGN KEY между двумя таблицами в Mysql?

Не получается удалить contraints в MariaDB.

1. Проверяю наличие ограничений:
SHOW CREATE TABLE `patient_patientquestionnaireanswer`;

2. Получаю ответ:

...
PRIMARY KEY (`id`),
KEY `constraint_name_1` (`column_1_id`) USING BTREE,
KEY `constraint_name_2` (`column_2_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=330 DEFAULT CHARSET=utf8


3. Проверяю еще:
select `CONSTRAINT_NAME`, `TABLE_NAME`, `COLUMN_NAME`, `REFERENCED_TABLE_NAME`, `REFERENCED_COLUMN_NAME`
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
where REFERENCED_TABLE_SCHEMA = 'my_db' and TABLE_NAME = 'table_with_contraints';


4. Получаю в ответ две строки. Из них беру значение `CONSTRAINT_NAME` и подставляю в запрос:
ALTER TABLE `my_db`
    DROP FOREIGN KEY `constraint_name`;


5. На получаю ошибку:
Ошибка ядра: Error( 1091 ) 42000: "Can't DROP FOREIGN KEY `constraint_name`; check that it exists"


Где я ошибся? Как удалить ограничения чтобы можно было изменять связанную таблицу?
* Все названия столбцов или Contraint Key указываю верно. В вопросе указал названия для примера.
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
ALTER TABLE `table_with_contraints`
    DROP FOREIGN KEY `constraint_name`;

Хотя в ошибке указано имя constraint_name_1. И возможно constraint_name это название столбца, а не значение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы