Sono estremamente nuovo a SQL e sto cercando di eseguire un semplice ALTER TABLE per creare una nuova colonna e usarla come chiave esterna per fare riferimento a un'altra semplice tabella nel mio database. Ho alterato entrambe le tabelle di essere InnoDBCome aggiungere Foreign Key (MySQL)
Tuttavia, durante l'esecuzione del codice di ALTER TABLE, ottengo il seguente errore:
Error 1452 Cannot add or update a child row:
a foreign key constraint fails (`toys`.<result 2 when
explaining filename '#sql-6d4_6'>, CONSTRAINT
`#sql-6d4_6_ibfk_1` FOREIGN KEY (`toy_id`) REFERENCES `toys` (`toy_id`))
sotto ci sono le DESC di entrambe le tabelle:
Tabella 1:
FIELD TYPE NULL KEY EXTRA
toy_id int(11) NO PRI auto_increment
toy varchar(50) YES
Tabella 2:
FIELD TYPE NULL KEY EXTRA
boy_id int(11) NO PRI auto_increment
boy varchar(50) YES
E questa è la query ALTER stavo cercando di realizzare:
ALTER TABLE boys
ADD COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);
Ho guardato tutto cercando di capirlo, ma senza fortuna. Grazie in anticipo, e si prega di essere gentile con questa newbie :)
EDIT:
Ecco SHOW CREATE TABLE per entrambe le tabelle:
TABELLA 1:
CREATE TABLE `toys` (
`toy_id` int(11) NOT NULL AUTO_INCREMENT,
`toy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`toy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
TABELLA 2:
CREATE TABLE `boys` (
`boy_id` int(11) NOT NULL AUTO_INCREMENT,
`boy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`boy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
Rimuovere l'ultimo 'add':' ... Aggiungi vincolo toys_toy_id_fk FOREIGN KEY (toy_id) ... ' –
Ho provato a rimuovere ADD CONSTRAINT e lasciare ADD FOREIGN KEY, oltre a lasciare ADD CONSTRAINT e rimuovere "ADD" prima di FOREIGN KEY, ma ricevere lo stesso errore. – Keith
Puoi pubblicare l'output di 'SHOW CREATE TABLE toys' e di' SHOW CREATE TABLE boys'? –