sql - 在 MySQL 中重命名外键列

我们正在尝试重命名 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 中进行重命名。看起来我们必须先删除外键,然后进行重命名,然后再次添加外键。听起来对吗?有没有更好的方法,因为这看起来很困惑和麻烦?

任何帮助将不胜感激!

最佳答案

AFAIK,删除约束,然后重命名,然后添加约束是唯一的方法。先备份!

https://stackoverflow.com/questions/2014498/

相关文章:

sql - 在子查询中引用外部查询的表

mysql - 如何在 MySQL 中获得减去 6 周的时间戳?

mysql - 将 MySQL 数据库置于版本控制之下?

php - 基于信誉实现权限

mysql - 何时在 mysql 中使用 TEXT 而不是 VARCHAR

php - 在 Android 上运行 AMP (apache mysql php)

mysql - 我应该只坚持使用 AWS RDS 自动备份还是数据库快照?

mysql - 为 mysql/模糊搜索实现 Levenshtein 距离?

mysql - 如何将两列与mysql中的现有列名合并为一?

mysql - 如果需要太长时间,如何停止 MySQL 查询?