Удаление столбца с помощью внешнего ключа

В моей mysql DB с движком inno_db,

У меня есть таблица с внешним ключом. Я хочу удалить столбец (вместе с внешним ключом и соответствующим индексом, конечно, мне не нужен весь столбец!)

Теперь, просто отбрасывая его, появляется ошибка: Общая ошибка: 1025 Ошибка при переименовании '.\Road_dmy # sql-19d8_2be' to '.\Road_dmy\contact' (errno: 150)

Похоже, это известная проблема. http://bugs.mysql.com/bug.php?id=15317

Но так или иначе, что мне делать, чтобы отбросить этот столбец? Я очень уверен, что это возможно, никто не будет использовать эту БД иначе

(и b.t.w. как узнать истинные сведения о таинственном сообщении об ошибке выше?)

+5
08 апр. '11 в 1:06
источник поделиться
1 ответ

Сначала нужно отбросить ключ. Я не знаю имен ваших таблиц, но я дам вам общую стратегию на примере. Предположим, у вас есть следующие 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;
+5
08 апр. '11 в 1:23
источник

Посмотрите другие вопросы по меткам или Задайте вопрос