2010-05-27 3 views
1

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

Я хочу переименовать столбец «exerciseID» в «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) 

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

+0

http://www.xaprb.com/blog/2006/08/22/mysqls-error- 1025-explain/ – miku

ответ

2

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

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

EDIT: Подтверждена FK Rename in MySQL

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

alter table yourTable drop foreign key yourID 
+0

Так оно и было. Благодарю. – Travis

0

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

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

только имеющий быстрый поиск в Google, и это выглядит, как вы ссылаетесь столбец внешнего ключа - который предотвращает переименование.

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

Смежные вопросы