Bonjour,
J'utilise MySQL Workbench et lorsque j'exécute mes instructions DDL j'obtiens l'erreur suivante :
Ci-dessous une description de mes tables (categories, sections, products) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#1005 - Can't create table './products.frm' (errno: 121)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE IF NOT EXISTS `categories` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `name` VARCHAR(80) NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE IF NOT EXISTS `sections` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `category_id` INT UNSIGNED NOT NULL , `name` VARCHAR(80) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_categories` (`category_id` ASC) , CONSTRAINT `fk_categories` FOREIGN KEY (`category_id` ) REFERENCES `categories` (`id` ) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE = InnoDB;J'ai parcouru plusieurs forums et ce problème survient généralement lorsque le type de la clé de référence et celui de la clé étrangère sont différents. Malheureusement pour moi, il ne s'agit pas de ça. J'ai peut être mal organisé/conçu mes tables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 CREATE TABLE IF NOT EXISTS `products` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `category_id` INT UNSIGNED NOT NULL , `section_id` INT UNSIGNED NOT NULL , `created_at` DATETIME NOT NULL , `label` VARCHAR(100) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_categories` (`category_id` ASC) , INDEX `fk_sections` (`section_id` ASC) , CONSTRAINT `fk_categories` FOREIGN KEY (`category_id` ) REFERENCES `categories` (`id` ) ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT `fk_sections` FOREIGN KEY (`section_id` ) REFERENCES `sections` (`id` ) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE = InnoDB;
Quelqu'un a-t-il déjà eu ce problème ou dans le meilleur des cas sait comment le résoudre ?
D'avance merci pour votre aide,
Yvan
Partager