Мы пытаемся переименовать столбец в MySQL (5.1.31, InnoDB), который является внешним ключом к другой таблице.
Сначала, мы попытались использовать Django-юг, но натолкнулись на известную проблему:
http://south.aeracode.org/ticket/243
OperationalError: (1025, "Ошибка на переименовывает './xxx/#sql-bf_4d' к './xxx/cave_event' (errno: 150)")
И
Ошибка на переименовывает './xxx/#sql-bf_4b' к './xxx/cave_event' (errno: 150)
Эта ошибка 150 определенно принадлежит ограничениям внешнего ключа. Посмотрите, например.
Что делает mysql ошибку 1025 (HY000): Ошибка на переименовывает './foo' (errorno: 150) средний?
http://www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained/
Так, теперь мы пытаемся сделать переименование в необработанном SQL. Похоже, что мы оказываемся перед необходимостью отбрасывать внешний ключ сначала, затем сделайте переименовывание и затем добавьте внешний ключ назад снова. Это звучит правильным? Существует ли лучший путь, так как это кажется довольно сбивающим с толку и громоздким?
Любая справка очень ценилась бы!
AFAIK, сбросив ограничение, затем переименовать, затем добавить ограничение обратно - это единственный способ. Резервное копирование сначала!