Подтвердить что ты не робот

Как переименовать столбец первичного ключа в MySQL?

Как переименовать столбец первичного ключа в MySQL?

4b9b3361

Ответ 1

он не отличается от изменения любого другого столбца -

ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT( 11 ) NOT NULL AUTO_INCREMENT 

это изменяет столбец keyfield в таблице pkey, который будет называться keyfield2 - вы должны указать определение впоследствии, как обычно.

Ответ 2

Возможно, у вас есть ограничение внешнего ключа. Вы можете отключить их с помощью SET foreign_key_constraints=0, но вы должны помнить об обновлении базы данных впоследствии.

Ответ 3

Возможно, плохая практика работает. Но вы можете экспортировать весь свой db в текстовый файл sql. Найдите и замените PK, который вы хотите переименовать, а затем восстановите базу данных по sql.

Ответ 4

Оставьте часть PRIMARY KEY инструкции alter. Первичный ключ будет автоматически обновляться.

Ответ 5

Если вы работаете с InnoDB, то я думаю, что вы не можете переименовать первичные ключи, по крайней мере, вы не можете, если на них ссылаются внешние ключи. Вам нужно сбросить базу данных, переименовать столбцы и ссылки на ключи в файле дампа, а затем перезагрузить базу данных.

Ответ 6

Если в других таблицах есть внешний ключ в вашей таблице, вы не можете напрямую переименовать столбец с помощью таблицы alter, это вызовет следующую ошибку: [HY000] [1025] Ошибка при переименовании xxx в yyy (errno: 150) Вы должны:

  • удалять внешние ключи из других таблиц, указывающих на первичный ключ, который вы хотите переименовать
  • переименовать первичный ключ
  • добавить чужой столбец в другие таблицы

При переименовании таблицы в Intellij она генерирует код, который нужно удалить, и добавьте внешний ключ.