Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich den MySQL-Fehlercode Nr. 1089 „Falscher Präfixschlüssel'?

Warum erhalte ich den MySQL-Fehlercode Nr. 1089 „Falscher Präfixschlüssel'?

Patricia Arquette
Freigeben: 2024-11-01 07:35:30
Original
354 Leute haben es durchsucht

Why Am I Getting MySQL Error Code #1089

MySQL-Fehlercode #1089 verstehen

Der MySQL-Fehlercode #1089, „Falscher Präfixschlüssel“, weist auf ein Problem mit einem Primärschlüssel hin oder eindeutiger Index. Dies tritt insbesondere dann auf, wenn der verwendete Schlüsselteil keine Zeichenfolge ist oder wenn die Länge des verwendeten Schlüsselteils die Länge des tatsächlichen Schlüsselteils überschreitet.

In der bereitgestellten SQL-Abfrage:

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;
Nach dem Login kopieren

Die Das Problem ergibt sich aus der Verwendung von PRIMARY KEY (movie_id(3)). Diese Zeile erstellt einen Primärschlüssel für die ersten drei Bytes der Spalte movie_id, der durch das Segment (3) angegeben wird.

Beim Versuch, ein Präfix für einen numerischen Datentyp (in diesem Fall INT) zu erstellen, wird wird von MySQL nicht unterstützt. Dies liegt daran, dass Präfixschlüssel nur auf stringbasierte Datentypen anwendbar sind.

Um den Fehler zu beheben, sollten Sie die folgende Abfrage verwenden:

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;
Nach dem Login kopieren

Durch Entfernen des Segments (3) Der Primärschlüssel wird für die gesamte movie_id-Spalte erstellt und nicht nur für deren Präfix. Dadurch wird das Problem behoben und MySQL kann den Primärschlüssel korrekt erstellen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fehlercode Nr. 1089 „Falscher Präfixschlüssel'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage