6

inno_db エンジンを搭載した私の mysql DB では、

外部キーを持つテーブルがあります。列を削除したい(もちろん、外部キーと関連するインデックスとともに-列全体は必要ありません!)

ここで、単純にドロップするとエラーが発生します: General error: 1025 Error on rename of '.\road_dmy#sql-19d8_2be' to '.\road_dmy\contact' (errno: 150)

これは既知の問題のようです。 http://bugs.mysql.com/bug.php?id=15317

とにかく、この列を削除するにはどうすればよいですか? それ以外の場合、誰もこのDBを使用しない可能性があると確信しています

(ところで、上記の不思議なエラー メッセージの本当の詳細を知るにはどうすればよいでしょうか?)

4

1 に答える 1

7

最初にキーをドロップする必要があります。あなたのテーブルの名前はわかりませんが、例を挙げて一般的な戦略を示します。次の 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;
于 2011-04-08T01:23:34.497 に答える