Ошибка ALTER TABLE - PullRequest
       30

Ошибка ALTER TABLE

1 голос
/ 27 мая 2010

Может кто-нибудь объяснить мне, почему я получаю следующую ошибку?

Я хочу переименовать столбец "exercID" в "ID" в таблице MySQL, используя следующий синтаксис.

ALTER TABLE  `exercises` CHANGE  `exerciseID`  `ID` INT( 11 ) NOT NULL AUTO_INCREMENT

Однако я получаю следующую ошибку:

MySQL said: 

#1025 - Error on rename of './balance/#sql-de_110e' to './balance/exercises' (errno: 150)

Любые предложения будут высоко оценены

Ответы [ 3 ]

2 голосов
/ 27 мая 2010

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

Я думаю, что MySQL зацикливается на том факте, что при переименовании отношения FK больше не действительны и выдает ошибку.

РЕДАКТИРОВАТЬ: Подтверждено Переименование FK в MySQL

Вам нужно будет сделать что-то вроде этого:

alter table yourTable drop foreign key yourID
0 голосов
/ 27 мая 2010

просто быстрый поиск в Google, и похоже, что вы ссылаетесь на столбец во внешнем ключе - что мешает переименовать.

боюсь, я не уверен, как вы решите проблему, так как я не использовал все внешние ключи в MySQL

0 голосов
/ 27 мая 2010

я думаю, что это может быть многошаговый процесс.

  1. добавить новый столбец,
  2. скопировать данные из исходного столбца
  3. удалить старыйстолбец
...