В реляционных базах данных при условии третьей нормальной формы есть связи между записями. Взаимосвязи обеспечиваются в базе дынных MySQL с помощью специальных ключей primary keys, foreign keys, foreign key constraints, индексами и др. Также в базе данных есть система проверки целостности.
При необходимости удалить какую-либо запись происходит проверка взаимосвязей. Если в результате этой проверки будут найдены дочерние записи произойдет ошибка. Вначале нужно избавится от дочерних записей. Что делать если в конкретной ситуации их не нужно удалять? Например: Изменили схему базы данных в приложении и нужно мигрировать данные. Писать процедуру миграции на этапе начальной разработки совсем не эффективно. В этот момент может пригодиться в некоторых случаях следующая последовательность действий:
- Удалить базу данных;
- Cоздать базу;
- Восстановить данные из дампа.
Ошибка проверки внешних ключей при удалении записи из базы данных или при удалении таблицы:
Cannot delete or update a parent row: a foreign key constraint fails
Решение этой проблемы - отключение проверки внешних ключей.
SET foreign_key_checks = 0;
DROP TABLE <table_name>;
SET foreign_key_checks = 1;
Чтобы проверка не происходила вовсе можно просто удалить связи. Без индексов и связей база данных будет работать крайне медленно (безумная идея).
ALTER TABLE <table_name> DROP FOREIGN KEY <foreign_key_name>
Полный синтаксис ALTER TABLE