Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens le code d'erreur MySQL n° 1089 « Clé de préfixe incorrecte » ?

Pourquoi est-ce que j'obtiens le code d'erreur MySQL n° 1089 « Clé de préfixe incorrecte » ?

Patricia Arquette
Libérer: 2024-11-01 07:35:30
original
353 Les gens l'ont consulté

Why Am I Getting MySQL Error Code #1089

Comprendre le code d'erreur MySQL n°1089

Le code d'erreur MySQL n°1089, "Clé de préfixe incorrecte", indique un problème avec une clé primaire ou un index unique. Cela se produit spécifiquement lorsque la partie clé utilisée n'est pas une chaîne ou lorsque la longueur de la partie clé utilisée dépasse la longueur réelle de la partie clé.

Dans la requête SQL fournie :

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;
Copier après la connexion

Le le problème provient de l'utilisation de PRIMARY KEY (movie_id(3)). Cette ligne crée une clé primaire sur les trois premiers octets de la colonne movie_id, qui est spécifiée par le segment (3).

Cependant, tenter de créer un préfixe sur un type de données numérique (INT dans ce cas) n'est pas pris en charge par MySQL. En effet, les clés de préfixe ne s'appliquent qu'aux types de données basés sur des chaînes.

Pour résoudre l'erreur, vous devez utiliser la requête suivante :

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`)
) ENGINE = InnoDB;
Copier après la connexion

En supprimant le segment (3), la clé primaire est créée sur toute la colonne movie_id et non uniquement sur son préfixe. Cela résout le problème et permet à MySQL de créer correctement la clé primaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal