我们试图在MySQL(5.1.31,InnoDB)中重命名一个作为外键连接到另一张表的列。
起初,我们尝试使用Django-South,但遇到了已知问题:
http://south.aeracode.org/ticket/243
OperationalError: (1025, "Error on rename of './xxx/#sql-bf_4d' to './xxx/cave_event' (errno: 150)")
和
Error on rename of './xxx/#sql-bf_4b' to './xxx/cave_event' (errno: 150)
这个错误150肯定与外键约束有关。例如,参见:
What does mysql error 1025 (HY000): Error on rename of './foo' (errorno: 150) mean?
http://www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained/
所以,现在我们正在尝试使用原生SQL进行重命名。看起来我们需要先删除外键,然后进行重命名,最后再添加外键。这听起来正确吗?是否有更好的方法,因为这似乎相当混乱和繁琐?
如果您能提供任何帮助,将不胜感激!