使用外键删除列

she*_*iel 5 mysql mysql-error-1025 sql-drop

在我的mysql数据库上使用inno_db引擎,

我有一张带外键的桌子.我想删除列(当然还有外键和相关索引 - 我不需要整列!)

现在,简单地删除它会产生错误:一般错误:1025错误将'.\ road_dmy#sql-19d8_2be'重命名为'.\ road_dmy\contact'(错误号:150)

听起来这是一个众所周知的问题. http://bugs.mysql.com/bug.php?id=15317

但无论如何,我应该怎么做才能放弃这个专栏?我非常确定没有人会使用这个DB

(顺便说一下,我怎么知道上面神秘错误信息的真实细节?)

Asa*_*aph 6

你必须先放下钥匙.我不知道你的牌桌的名字,但我会通过例子给你一般的策略.假设您有以下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;
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令删除a_id表中的列B:

alter table B drop foreign key b_ibfk_1, drop column a_id;
Run Code Online (Sandbox Code Playgroud)