Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich beim Erstellen einer MySQL-Tabelle die Fehlermeldung „Falscher Präfixschlüssel' (#1089)?

Warum erhalte ich beim Erstellen einer MySQL-Tabelle die Fehlermeldung „Falscher Präfixschlüssel' (#1089)?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 02:33:03379Durchsuche

Why am I getting the

MySQL-Fehler: Falscher Präfixschlüssel (#1089)

Problem:

Beim Versuch, eine Tabelle mit zu erstellen Folgende Abfrage:

<code class="sql">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;</code>

Der folgende Fehler ist aufgetreten:

#1089 - Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys.

Antwort:

Der Fehler tritt auf, weil die PRIMARY KEY-Definition Folgendes angibt ein Unterteilschlüssel, also nur die ersten 3 Bytes von movie_id. Dies wird nur für String-Datentypen unterstützt. Bei Primärschlüsseln für numerische Datentypen muss die vollständige Länge ohne Angabe eines Unterteils enthalten sein:

<code class="sql">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;</code>

Nach dieser Änderung sollte der Fehler nicht mehr auftreten und die Tabelle wird erfolgreich erstellt.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Erstellen einer MySQL-Tabelle die Fehlermeldung „Falscher Präfixschlüssel' (#1089)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn