Как удалить ограничения из моей таблицы MySQL?

Я хочу удалить ограничения из моей таблицы. Мой запрос:

ALTER TABLE `tbl_magazine_issue` 
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`

Но у меня есть ошибка:

#1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'constraint FK_tbl_magazine_issue_mst_users' в строке 1

206
02 янв. '13 в 15:27
источник поделиться
10 ответов

Mysql имеет специальный синтаксис для ограничения ограничений внешнего ключа:

ALTER TABLE tbl_magazine_issue
  DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
371
02 янв. '13 в 15:35
источник

У меня была такая же проблема, и мне пришлось решить этот код:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX  `id_name_fk`;
41
19 авг. '13 в 18:40
источник

В MySQL нет такой вещи, как DROP CONSTRAINT. В вашем случае вы можете использовать DROP FOREIGN KEY вместо этого.

24
02 янв. '13 в 15:35
источник

Если ограничение не является внешним ключом, например. один добавлен с использованием "UNIQUE CONSTRAINT (colA, colB)", то это индекс, который можно отбросить с помощью ALTER TABLE ... DROP INDEX ...

11
06 янв. '15 в 13:58
источник

Чтобы добавить немного ответа Роберта Найта, поскольку заголовок сообщения сам по себе не упоминает внешние ключи (и поскольку у него нет полных образцов кода, а так как блоки кода комментариев SO не отображаются, а также блоков ответов ответов), я добавлю это для уникальных ограничений. Любое из этих действий позволяет отказаться от ограничения:

ALTER TABLE `table_name` DROP KEY `uc_name`;

или

ALTER TABLE `table_name` DROP INDEX `uc_name`;
4
04 мая '17 в 20:34
источник

Некоторые ORM или фреймворки используют другое соглашение об именах для внешних ключей, чем стандартная FK_[parent table]_[referenced table]_[referencing field], поскольку они могут быть изменены.

Например, Laravel использует [parent table]_[referencing field]_foreign как соглашение об именах. Вы можете показать имена внешних ключей, используя этот запрос, как показано здесь:

SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_SCHEMA = '<database>' AND REFERENCED_TABLE_NAME = '<table>';

Затем удалите внешний ключ, выполнив предыдущий запрос DROP FOREIGN KEY и его собственное имя.

2
25 нояб. '16 в 12:48
источник

Также хорошо, вы можете временно отключить все проверки внешнего ключа из базы данных mysql: SET FOREIGN_KEY_CHECKS=0; И чтобы включить его снова: SET FOREIGN_KEY_CHECKS=1;

2
20 февр. '18 в 16:12
источник
  • Перейдите в представление структуры таблицы
  • Вы увидите 2 варианта в верхней структуре a.Table b. Соотношение.
  • Теперь нажмите Вид связи, здесь вы можете отказаться от ограничения внешнего ключа. Здесь вы получите все отношения.
1
22 июня '16 в 9:38
источник

Для тех, кто приходит сюда с помощью MariaDB:

Обратите внимание, что MariaDB позволяет операторам DROP CONSTRAINT в целом, например, для отмены контрольных ограничений:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

https://mariadb.com/kb/en/library/alter-table/

0
30 авг. '18 в 18:33
источник

это будет работать на MySQL для ограничения ограничений

alter table tablename drop primary key;

alter table tablename drop foreign key;
-5
03 мая '15 в 9:30
источник

Посмотрите другие вопросы по меткам или Задайте вопрос