在MySQL中重命名外键列 [英] Renaming foreign-key columns in MySQL

查看:181
本文介绍了在MySQL中重命名外键列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们试图重命名MySQL(5.1.31,InnoDB)中的一个列,这个列是另外一个表的外键。

起初,我们试图使用Django-South,但遇到了一个已知的问题:



http://south.aeracode.org/ticket/243


OperationalError:(1025,Error ./xxx/#sql-bf_4d重命名为./xxx/cave_event(errno:150))


AND


将'./xxx/#sql-bf_4b'重命名为'./xxx/cave_event'错误(错误:150 )

这个错误150肯定与外键约束有关。见例如



http:// www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained/



所以,现在我们正在尝试在原始SQL中重命名。看起来我们将不得不先删除外键,然后重命名,然后再添加外键。这听起来正确吗?有没有更好的办法,因为这似乎很混乱和麻烦?

任何帮助将不胜感激!


We're trying to rename a column in MySQL (5.1.31, InnoDB) that is a foreign key to another table.

At first, we tried to use Django-South, but came up against a known issue:

http://south.aeracode.org/ticket/243

OperationalError: (1025, "Error on rename of './xxx/#sql-bf_4d' to './xxx/cave_event' (errno: 150)")

AND

Error on rename of './xxx/#sql-bf_4b' to './xxx/cave_event' (errno: 150)

This error 150 definitely pertains to foreign key constraints. See e.g.

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/

So, now we're trying to do the renaming in raw SQL. It looks like we're going to have to drop the foreign key first, then do the rename, and then add the foreign key back again. Does that sound right? Is there a better way, since this seems pretty confusing and cumbersome?

Any help would be much appreciated!

解决方案

AFAIK, dropping the constraint, then rename, then add the constraint back is the only way. Backup first!

这篇关于在MySQL中重命名外键列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆