2011-04-08 14 views
5

En mi base de datos MySQL con el motor inno_db,Dejar caer una columna con una clave externa

Tengo una tabla con una clave externa. Quiero abandonar la columna (junto con la clave externa y los índices asociados por supuesto - no necesito toda la columna!)

Ahora, simplemente dejarlo caer produce un error: Error general : 1025 Error en la cambiar el nombre de '. \ road_dmy # sql-19d8_2be' a '. \ road_dmy \ contact' (errno: 150)

Parece que se trata de un problema conocido. http://bugs.mysql.com/bug.php?id=15317

Pero de todos modos, ¿qué debo hacer para abandonar esta columna? Estoy muy seguro de que es posible que nadie utilizaría esta dB de otro modo

(y b.t.w. ¿cómo puedo saber los verdaderos detalles del mensaje de error anterior misteriosa?)

+0

debe quitar primero la llave. Publique los resultados del comando 'show create table contact;' y podremos darle los comandos exactos. – Asaph

+0

Sí, simplemente soltando la llave primero hizo el trabajo. – shealtiel

+0

Por favor, no escriba etiquetas en los títulos de las preguntas. –

Respuesta

5

debe quitar primero la llave. No sé los nombres de sus tablas, pero le daré la estrategia general con el ejemplo. Suponga que tiene las siguientes tablas InnoDB 2:

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; 

se puede soltar la columna de la a_id en la tabla B con el siguiente comando:

alter table B drop foreign key b_ibfk_1, drop column a_id; 
Cuestiones relacionadas