MySQL (InnoDB): löschen Sie die Spalte und die zugehörige foreign key-Einschränkung und index

Hier ist meine Tabelle:

CREATE TABLE `alums_alumphoto` (  
  `id` int(11) NOT NULL auto_increment,  
  `alum_id` int(11) NOT NULL,  
  `photo_id` int(11) default NULL,  
  `media_id` int(11) default NULL,  
  `updated` datetime NOT NULL,  
  PRIMARY KEY  (`id`),  
  KEY `alums_alumphoto_alum_id` (`alum_id`),  
  KEY `alums_alumphoto_photo_id` (`photo_id`),  
  KEY `alums_alumphoto_media_id` (`media_id`),  
  CONSTRAINT `alums_alumphoto_ibfk_1` FOREIGN KEY (`media_id`) REFERENCES `media_mediaitem` (`id`),  
  CONSTRAINT `alum_id_refs_id_706915ea` FOREIGN KEY (`alum_id`) REFERENCES `alums_alum` (`id`),  
  CONSTRAINT `photo_id_refs_id_63282119` FOREIGN KEY (`photo_id`) REFERENCES `media_mediaitem` (`id`)  
) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8  

Ich möchte, um die Spalte zu löschen photo_id, die vermutlich auch benötigen, löschen Sie die foreign key-Einschränkung und index.

Das problem ist, dass ich bekomme Fehler, wenn ich versuche, legen Sie die Spalte:

FEHLER 1025 (HY000): Error on rename of '.\dbname\#sql-670_c5c' zu '.\dbname\alums_alumphoto' (errno: 150)

... wenn ich versuche den index löschen (gleiche wie oben), und wenn ich versuche, um die drop foreign key-Einschränkung:

FEHLER 1091 (42000): Can ' T DROP 'photo_id_refs_id_63282119'; überprüfen, dass die Spalte/Schlüssel vorhanden ist)

Welcher Reihenfolge sollte ich all dies tun? Was präzise Befehle sollte ich verwenden?

Haben Sie versucht, fallen beide die Spalte und der index im gleichen ALTER-Anweisung?

InformationsquelleAutor nmjk | 2008-12-03

Schreibe einen Kommentar