Sto cercando di creare una tabella con una colonna varchar come chiave esterna ma MySql mi dà un errore durante la creazione della tabella. La mia domanda è come questo:Tabella MySQL con una colonna varchar come chiave esterna
CREATE TABLE network_classes (
id TINYINT(1) UNSIGNED NOT NULL AUTO_INCREMENT,
category VARCHAR(80) NOT NULL,
PRIMARY KEY(id),
KEY `key_1` (`id`,`category`)
)
ENGINE=InnoDB;
CREATE TABLE networks (
id TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
category VARCHAR(80) NOT NULL,
director_id TINYINT(3) UNSIGNED NULL,
director_name VARCHAR(100) NULL,
description VARCHAR(1000) NULL,
last_modified TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
user_id SMALLINT UNSIGNED NULL,
PRIMARY KEY(id),
KEY `networks_fk1` (`category`),
CONSTRAINT `networks_fk1` FOREIGN KEY (`category`) REFERENCES `network_classes` (`category`) ON DELETE NO ACTION,
INDEX networks_index2471(name),
INDEX networks_index2472(director_id, director_name)
)
ENGINE=InnoDB;
ed ottengo questo errore:
[Err] 1215 - Cannot add foreign key constraint
Sto usando MySQL 5.6.12. Come posso riscrivere la mia query per risolverlo?
ho corretto, ma hanno ancora lo stesso problema –
tuo network_classess è vuoto ? Un'altra cosa, se si definisce una chiave primaria composta, la chiave esterna deve essere uguale (non ha alcun impatto sul proprio errore) –
sì, lo è. puoi per favore eseguire la query dalla tua parte? Sto cercando una soluzione pratica piuttosto che l'immaginazione teorica. –