Recibo este mensaje de error:
ERROR 1217 (23000) en la línea 40: No se puede eliminar o actualizar una fila principal: falla una restricción de clave externa
... cuando intento dejar caer una mesa:
DROP TABLE IF EXISTS `area`;
... definido así:
CREATE TABLE `area` (
`area_id` char(3) COLLATE utf8_spanish_ci NOT NULL,
`nombre_area` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
`descripcion_area` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
PRIMARY KEY (`area_id`),
UNIQUE KEY `nombre_area_UNIQUE` (`nombre_area`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
Lo curioso es que ya eliminé todas las demás tablas del esquema que tienen claves externas en contra area
. En realidad, la base de datos está vacía a excepción de la area
tabla.
¿Cómo es posible que tenga filas secundarias si no hay ningún otro objeto en la base de datos? Hasta donde yo sé, InnoDB no permite claves externas en otros esquemas, ¿verdad?
(Incluso puedo ejecutar un RENAME TABLE area TO something_else
comando: -?)
CONSTRAINT fk_servicio_area1 FOREIGN KEY (area_id) REFERENCES area (area_id)
, es decir, sin nombre de esquema en la referencia de la tabla: -?