Ottengo questo messaggio di errore:
ERRORE 1217 (23000) alla riga 40: impossibile eliminare o aggiornare una riga padre: un vincolo di chiave esterna non riesce
... quando provo a eliminare una tabella:
DROP TABLE IF EXISTS `area`;
... definito così:
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;
La cosa divertente è che ho già eliminato tutte le altre tabelle nello schema che hanno chiavi esterne contro area
. In realtà, il database è vuoto ad eccezione della area
tabella.
Come può avere righe figlie se non ci sono altri oggetti nel database? Per quanto ne so, InnoDB non consente chiavi esterne su altri schemi, vero?
(Posso anche eseguire un RENAME TABLE area TO something_else
comando: -?)
CONSTRAINT fk_servicio_area1 FOREIGN KEY (area_id) REFERENCES area (area_id)
, cioè, nessun nome di schema sul riferimento alla tabella: -?