Невозможно удалить таблицу MySQL - PullRequest
3 голосов
/ 18 ноября 2011

Мне нужно удалить устаревшую пустую таблицу из базы данных MySQL.

Определение таблицы не подходит:

CREATE TABLE IF NOT EXISTS `Address` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `ContactId` int(11) NOT NULL,
  PRIMARY KEY (`Id`),
  KEY `ContactId` (`ContactId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

В результате

#1217 - Cannot delete or update a parent row: a foreign key constraint fails

Было ограничение на ContactId, но я удалил его.

Функция экспорта PHPMyAdmin не показывает ничего, кроме определения таблицы, показанного выше. В таблице нет строк, и, насколько мне известно, FK не ссылаются на поле Address.Id (но я не знаю, как это проверить).

Может кто-нибудь пожалуйста посоветовать, как мне избавиться от стола?

Ответы [ 2 ]

13 голосов
/ 18 ноября 2011
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE Address;
SET FOREIGN_KEY_CHECKS = 1;
8 голосов
/ 18 ноября 2011

Для вывода списка внешних ключей

select 
    concat(table_name, '.', column_name) as 'foreign key',  
    concat(referenced_table_name, '.', referenced_column_name) as 'references'
from
    information_schema.key_column_usage
where
    referenced_table_name is not null;

Для специального поиска в вашем случае:

select 
    constraint_name
from
    information_schema.key_column_usage
where
    referenced_table_name = 'Address' AND referenced_column_name = 'ContactId';

Чтобы удалить ограничение внешнего ключа:

ALTER TABLE [table_name] DROP FOREIGN KEY [constraint_name];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...