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;
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;
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!