Странная ошибка MySQL

0

Здравствуйте, у меня есть база данных mysql, в которой есть таблица адресов.

Так он и создал:

CREATE TABLE IF NOT EXISTS `addresses` (
  `adr_id` int(11) NOT NULL AUTO_INCREMENT,
  `per_id` int(11) NOT NULL,
  `adr_street` varchar(50) NOT NULL,
  `adr_houseno` int(11) DEFAULT NULL,
  `adr_housenoadd` varchar(10) DEFAULT NULL,
  `adr_postcode` varchar(25) NOT NULL,
  `adr_city` varchar(20) NOT NULL,
  `adr_type` varchar(45) DEFAULT NULL,
  `cnt_id` int(11) NOT NULL,
  `adr_date` date DEFAULT NULL,
  `sys-mut-dt` timestamp NULL DEFAULT NULL,
  `sys-mut-user` varchar(20) DEFAULT NULL,
  `sys-mut-id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`adr_id`),
  KEY `per_id` (`per_id`),
  KEY `cnt_id` (`cnt_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


    --
    ALTER TABLE `addresses`
      ADD CONSTRAINT `cnt_id` FOREIGN KEY (`cnt_id`) REFERENCES `countries` (`cnt_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
      ADD CONSTRAINT `per_id` FOREIGN KEY (`per_id`) REFERENCES `persons` (`per_id`) ON DELETE NO ACTION ON UPDATE NO ACTION;

Теперь мне нужно удалить ограничение per_id, так как я решил, что это не важно. Поэтому я удалил его и увидел здесь ошибку:

SQL-запрос:

ALTER TABLE `addresses` DROP INDEX `per_id`

MySQL said: Documentation
#1025 - Error on rename of './ladosa/#sql-521_d2' to './ladosa/addresses' (errno: 150) 

Затем я решил удалить таблицу и создать ее снова без ограничения, но когда я сделал таблицу drop, я получаю:

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

так как я могу избавиться от этой проблемы?

Теги:
mysql-error-1025

1 ответ

5
Лучший ответ

Индекс не совпадает с внешним ключом. Вместо этого попробуйте:

ALTER TABLE `addresses` DROP FOREIGN KEY `per_id`

Ещё вопросы

Сообщество Overcoder
Наверх
Меню