【问题标题】:ALTER TABLE errorALTER TABLE 错误
【发布时间】:2011-02-24 15:27:12
【问题描述】:
有人可以向我解释为什么我会收到以下错误吗?
我想使用以下语法将 mysql 表中的“exerciseID”列重命名为“ID”。
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)
任何建议将不胜感激
【问题讨论】:
标签:
mysql
sql
alter-table
mysql-error-1025
【解决方案1】:
我会检查您是否有对该列的任何外键引用。如果是这样,您可能需要删除为该列定义的外部关系,然后重命名,然后使用新的列名称将您的外键关系放回原处。
我认为 MySQL 对当您重命名时,FK 关系不再有效并且抛出错误这一事实感到困惑。
编辑:确认
FK Rename in MySQL
你需要做这样的事情:
alter table yourTable drop foreign key yourID
【解决方案2】:
我认为这可能是一个多步骤的过程。
- 添加一个新列,
- 从原始列复制数据
- 删除旧列
【解决方案3】:
只是在 google 中进行了快速搜索,看起来您正在引用外键中的列 - 这会阻止重命名。
恐怕我不确定你会如何解决这个问题,因为我在 MySQL 中使用的外键并不多