Как переименовать столбец первичного ключа в MySQL?
Как переименовать столбец первичного ключа в MySQL?
Ответ 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 она генерирует код, который нужно удалить, и добавьте внешний ключ.