Je dois créer et utiliser une base de données pour un projet de classe. J'ai développé la base de données et l'application localement en utilisant mysql workbench. Il doit être hébergé sur un autre service appelé myphpmyadmin. le problème est quand je crée mes tables en utilisant la ligne d'exécution de mysql dans ce service j'obtiens l'erreur suivante.Erreur de requête MySql 150 puzzle
Error
SQL query:
CREATE TABLE IF NOT EXISTS `artists_residence` (
`artists_id` INT(11) ,
`city_id` INT(11) ,
PRIMARY KEY ( `artists_id` , `city_id`) ,
CONSTRAINT FOREIGN KEY ( `artists_id`) REFERENCES `artists` ( `id`) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT FOREIGN KEY ( `city_id`) REFERENCES `city` ( `id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = INNODB CHARSET = Latin1;
MySQL said: Documentation
#1005 - Can't create table 'fondellb-db.artists_residence' (errno: 150)
Voici le fichier entier de mySql que j'essaie d'exécuter.
CREATE TABLE IF NOT EXISTS `artists` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`fname` VARCHAR(255) NOT NULL,
`lname` VARCHAR(255) NOT NULL,
`year_of_birth` DATE NOT NULL,
`year_of_death` DATE NULL DEFAULT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB CHARSET = Latin1;
CREATE TABLE IF NOT EXISTS `country` (
`country_id` INT(11) NOT NULL,
`name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`country_id`))
ENGINE = InnoDB CHARSET = Latin1;
CREATE TABLE IF NOT EXISTS `city` (
`id` INT(11) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`fk_country_id` INT(11),
PRIMARY KEY (`id`, `fk_country_id`),
CONSTRAINT `country_id`
FOREIGN KEY (`fk_country_id`)
REFERENCES `country` (`country_id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT)
ENGINE = InnoDB CHARSET = Latin1;
CREATE TABLE IF NOT EXISTS `Medium` (
`id` INT(11) NOT NULL,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB CHARSET = Latin1;
CREATE TABLE IF NOT EXISTS `artists_medium` (
`artists_id` INT(11),
`medium_id` INT(11),
PRIMARY KEY (`artists_id`, `medium_id`),
CONSTRAINT
FOREIGN KEY (`artists_id`)
REFERENCES `artists` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT
FOREIGN KEY (`medium_id`)
REFERENCES `Medium` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB CHARSET = Latin1;
CREATE TABLE IF NOT EXISTS `artists_residence` (
`artists_id` INT(11),
`city_id` INT(11),
PRIMARY KEY (`artists_id`, `city_id`),
CONSTRAINT
FOREIGN KEY (`artists_id`)
REFERENCES `artists` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT
FOREIGN KEY (`city_id`)
REFERENCES `city` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB CHARSET = Latin1;
Je ne comprends pas ce qui échoue dans la requête finale. Toutes les autres requêtes sont réussies et les tables ont été créées. Ive a joué avec cette requête dans toutes sortes de variations et rien ne semble résoudre l'erreur. J'ai supprimé les index explicites, j'ai changé l'ordre des contraintes, vérifié toutes mes comparaisons de type. C'est un fichier que mysql a exporté en fonction du modèle que j'ai conçu, donc je ne sais pas pourquoi maintenant je reçois cette erreur. S'il vous plaît ne me référez pas à une référence au code d'erreur ou à un autre poste qui reçoit également ce code d'erreur, je sais ce qui peut causer l'erreur, mais je me demande ce qui le cause ici.
Je préfère d'abord construire les tables et les index, et ensuite ajouter les contraintes – Strawberry