webentwicklung-frage-antwort-db.com.de

Was ist los mit meiner SQL hier? # 1089 - Falscher Präfixschlüssel

CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`(11))
) ENGINE = MyISAM;

Ich erhalte den #1089 - Incorrect prefix key-Fehler und kann nicht herausfinden, was ich falsch mache. Hilfe bitte!

51
sandorfalot

In Ihrer PRIMARY KEY-Definition haben Sie (id(11)) verwendet, der einen Präfixschlüssel definiert - d. H. Nur die ersten 11 Zeichen sollten zum Erstellen eines Index verwendet werden. Präfixschlüssel sind nur für die Typen CHAR, VARCHAR, BINARY und VARBINARY gültig. Ihr id-Feld ist eine int, daher der Fehler.

Verwenden Sie stattdessen PRIMARY KEY (id) und Sie sollten in Ordnung sein.

MySQL-Referenz hier und aus Absatz 4 gelesen.

83
user1864610

Wenn Sie eine GUI verwenden und immer noch dasselbe Problem haben. Lassen Sie den Größenwert einfach leer, der Primärschlüssel gibt den Wert auf 11 vor. Sie sollten damit zufrieden sein. Arbeitete mit Bitnami phpmyadmin.

17
Ralphkay

Diese 

Primärschlüssel (id (11))

wird automatisch von phpmyadmin generiert, ändern in 

Primärschlüssel (id)

.

Es gibt eine einfache Möglichkeit, dies zu tun. Dies ist möglicherweise nicht die sachkundige Antwort und funktioniert möglicherweise nicht für alle, aber für mich.

Deaktivieren Sie alle primären und eindeutigen Kontrollkästchen und erstellen Sie eine einfache, einfache Tabelle.

Wenn Sie mit phpmyadmin (oder anderem) die Tabellenstruktur sehen, machen Sie die Spalte primary durch die angegebene Schaltfläche. 

Klicken Sie dann auf change und bearbeiten Sie die Einstellungen dieser oder anderer Spalten wie 'unique' usw. 

4
Robot Boy
CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`(11))
) ENGINE = MyISAM;

Ändern 

CREATE TABLE `table`.`users` (
        `id` INT(11) NOT NULL AUTO_INCREMENT,
        `username` VARCHAR(50) NOT NULL,
        `password` VARCHAR(50) NOT NULL,
        `dir` VARCHAR(100) NOT NULL,
        PRIMARY KEY (`id`)
    ) ENGINE = MyISAM;
4
Roshan Padole

Wenn Sie die ID als Primärschlüssel angeben, erscheint ein Popup-Fenster, und Sie werden gefragt, wie viele Primärschlüssel dieses Primärschlüssels haben .. So lassen Sie das Feld leer, da standardmäßig der Wert int eingestellt ist. 11. Klicken Sie dann auf OK Geben Sie ohne Nummer eine Nummer ein. In dieser Art von Fehler werden Sie nie in der Zukunft vorkommen. Danke. 

2
hemant rao

In phpMyAdmin ist das Problem dasselbe. Ich habe gerade eine Tabelle ohne const erstellt. Später habe ich die ID in einen Primärschlüssel geändert. Dann habe ich die ID in Auto-Inc geändert. Das hat das Problem gelöst. 

ALTER TABLE `users` CHANGE `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT;
2
Arindam

Für mich geht das:

CREATE TABLE `users`(
    `user_id` INT(10) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(255) NOT NULL,
    `password` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`user_id`)
) ENGINE = MyISAM;       
2
Issac Nguyen

In meinem Fall stand ich vor dem Problem, als ich aus phpmyadmin einen Tisch erstellte. Für die ID-Spalte wähle ich die primäre Option aus der Index-Dropdown-Liste und füllte die Größe 10 aus.

Wenn Sie phpmyadmin verwenden, ändern Sie die Index-Dropdown-Option erneut. Wenn Sie die primäre Option erneut auswählen, werden Sie nach der Größe gefragt. Lassen Sie sie leer und fertig.

0
sh6210

Ich hatte auch das gleiche Problem. 
Lösungsarbeit für mich:

 CREATE TABLE WENN NICHT "users" vorhanden ist (
 `Sr_no` int (11) NOT NULL AUTO_INCREMENT, 
" Benutzername "VARCHAR (50) NOT NULL, 
" Passwort "VARCHAR (50) NOT NULL, 
 `Dir` VARCHAR (100) NOT NULL, 
 PRIMARY KEY (` sr_no`) 
) ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3; 

Ich füge diesen Code in SQL ein und führe ihn aus. Er funktioniert gut.

0
sayali

fügen Sie gemäß der neuesten Version von MySQL (phpMyAdmin) einen korrekten INDEX hinzu, während Sie den Primärschlüssel auswählen. Beispiel: id [int] INDEX 0, wenn id Ihr Primärschlüssel ist und sich am ersten Index befindet. Oder,


Versuchen Sie dies für Ihr Problem

CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE = MyISAM;
0
Omar Faruk