Как удалить первичный ключ из таблицы mysql, которая также является первичным ключом и внешним ключом в той же таблице?

У меня есть две разные таблицы, каждая из которых содержит 20 тыс. Записей, и по ошибке я сделал summaryId как первичный ключ и внешний ключ в той же таблице, но теперь я хочу удалить ограничение первичного ключа, которое также автоматически увеличивается. Когда я пытаюсь отказаться от синтаксиса первичного ключа, он возвращает мне ошибку:

# 1025 - Ошибка при переименовании '. \ tg # sql-a38_7f' в '. \ tg \ rest_web_availability_summary_pm' (номер ошибки: 150)

Я попробовал следующий запрос.

ALTER TABLE 'table_name' DROP PRIMARY KEY

Если у кого-нибудь есть идеи, скажите мне, как удалить первичный ключ.


person Adesh Pandey    schedule 11.04.2013    source источник
comment
какую команду вы используете для удаления первичного ключа?   -  person agim    schedule 11.04.2013
comment
ALTER TABLE 'table_name' DROP PRIMARY KEY   -  person Adesh Pandey    schedule 11.04.2013


Ответы (3)


Проблема в том, что ваше поле auto_increment. Вы должны сначала удалить auto_increment, а затем удалить первичный ключ ... так что попробуйте следующее:

ALTER TABLE `mytable` CHANGE COLUMN `id` `id` INT(11) NOT NULL, DROP PRIMARY KEY;

Переопределение столбца без auto_increment удаляет его

person agim    schedule 11.04.2013
comment
Я пробовал ALTER TABLE 'table_name' DROP PRIMARY KEY ALTER TABLE 'table_name' DROP PRIMARY KEY 'имя_столбца' ALTER TABLE 'table_name' DROP PRIMARY KEY 'column_name', ADD PRIMARY KEY (column2); Но ни одна из вышеперечисленных команд мне не помогла. - person Adesh Pandey; 11.04.2013
comment
@AdeshPandey сначала убирает с поля флаг auto_increment. Приведенное выше утверждение должно работать. - person agim; 11.04.2013

У меня была та же проблема, оказалось, что, поскольку на нее ссылались другие поля, mysql требовал, чтобы столбец был уникальным, поэтому я сначала добавил уникальное ограничение и жил долго и счастливо:

alter table `mytable` add unique key `key` (`fieldname`);
alter table `mytable` drop primary key; -- which is fieldname...
person Vajk Hermecz    schedule 04.12.2014

Как уже упоминалось, вам нужно удалить FKs раньше. В MySQL сделайте так:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
person Kostandy    schedule 22.09.2016