Je continue à avoir ce code d'erreur mysql # 1089

CREATE TABLE `movies`.`movie`
( `movie_id` INT(3) NULL AUTO_INCREMENT, `movie_name` VARCHAR(25) NULL,
  `movie_embedded_id` VARCHAR(50) NULL, `rating_no` INT(3) NULL,
  `movie_description` VARCHAR(50) NULL, PRIMARY KEY (`movie_id`(3))) ENGINE = InnoDB;

je reçois cette erreur:

#1089-clé de préfixe incorrecte; la partie clé utilisée n'est pas une chaîne, La longueur utilisée est plus longue que la partie clé, ou le moteur de stockage ne soutenez les clés de préfixe uniques.

mais j'ai aucune idée de ce que cela signifie, quelqu'un a une idée?

19
demandé sur Sevvlor 2015-05-23 00:22:58

3 réponses

Avec la partie

PRIMARY KEY (`movie_id`(3))

vous dites à mysql de créer un sous-partie de la clé* sur les 3 premiers octets de movie id. Cela ne fonctionne que pour les types string.

Vous devez utiliser

PRIMARY KEY (`movie_id`)

sans longueur.

*Est-ce sûr que la requête résultant dans l'erreur? Je n'ai jamais vu ça sur une clé primaire, elle est utilisée pour les index.

76
répondu dognose 2018-03-28 23:44:01

après avoir sélectionné la touche primaire lorsque vous créez la table, ne saisissez aucune valeur dans la boîte de dialogue pop

2
répondu Albert Nguyen 2018-04-28 01:53:17

Vous pouvez également obtenir cette erreur lors de la création d'un index si vous spécifiez un préfixe de longueur supérieure à la longueur de la colonne réel. Si vous avez essayé de créer un index contenant someColumn(20) mais dans la table someColumnVARCHAR(15), alors cette erreur se produit.

1
répondu Wandering Zombie 2018-02-25 18:30:33