在我的mysql数据库上使用inno_db引擎,
我有一张带外键的表。 我想删除列(当然还有外键和相关索引 - 我不需要整列!)
现在,只需删除它就会产生错误: 一般错误:将'。\ road_dmy#sql-19d8_2be'重命名为'。\ road_dmy \ contact'(错误号码:150)时出现错误
听起来这是一个已知问题。 http://bugs.mysql.com/bug.php?id=15317
但无论如何,我应该怎么做才能放弃这个专栏?我非常确定没有人会使用这个DB,否则
(和b.t.w.我怎么知道上面神秘错误信息的真实细节?)
答案 0 :(得分:5)
您必须先删除密钥。我不知道你的牌桌的名字,但我会通过例子给你一般的策略。假设您有以下2个InnoDB表:
CREATE TABLE `A` (
`id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `B` (
`id` int(10) unsigned NOT NULL auto_increment,
`a_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `a_id` (`a_id`),
CONSTRAINT `b_ibfk_1` FOREIGN KEY (`a_id`) REFERENCES `a` (`id`)
) ENGINE=InnoDB;
您可以使用以下命令删除表a_id
中的B
列:
alter table B drop foreign key b_ibfk_1, drop column a_id;