Cosa c’è di sbagliato con il mio SQL qui? # 1089 – Chiave di prefisso errata

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; 

Sto ricevendo il #1089 - Incorrect prefix key Errore nella #1089 - Incorrect prefix key errato e non riesco a capire cosa sto facendo male. Aiuto per favore!

Nella tua definizione PRIMARY KEY che hai usato (id(11)) , che definisce una chiave di prefisso, vale a dire che i primi 11 caratteri devono essere usati solo per creare un indice. Le chiavi prefisso sono valide solo per i tipi CHAR , VARCHAR , BINARY e VARBINARY e il tuo campo id è un int , quindi l’errore.

Usa invece PRIMARY KEY (id) e dovresti stare bene.

Riferimento MySQL qui e leggi dal paragrafo 4.

Se stai usando una GUI e stai ancora ricevendo lo stesso problema. Basta lasciare il valore della dimensione vuoto, la chiave primaria imposta il valore su 11, si dovrebbe andare bene con questo. Ha funzionato con Bitnami phpmyadmin.

Questo

CHIAVE PRIMARIA ( id (11))

viene generato automaticamente da phpmyadmin, passare a

CHIAVE PRIMARIA ( id )

.

C’è un modo semplice per farlo. Questo potrebbe non essere la risposta di esperti e potrebbe non funzionare per tutti, ma lo è stato per me.

Deseleziona tutte le caselle di controllo primarie e uniche, crea una semplice tabella semplice.

Phpmyadmin (o altro) mostra la struttura della tabella, rende la colonna primaria con il pulsante dato.

Quindi fai clic su cambia e modifica le impostazioni di quella o di altre colonne come “unico” ecc.

 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; 

Cambia in

 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; 

Per me funziona:

 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; 

Il problema è lo stesso per me in phpMyAdmin. Ho appena creato una tabella senza alcun const. Più tardi ho modificato l’ID con una chiave primaria. Quindi ho cambiato l’ID in Auto-inc. Questo ha risolto il problema.

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

Quando assegni id come chiave primaria, viene un pop-up e questi ti assegna a quante dimensioni di questa chiave primaria. Quindi lasciate vuoto perché per impostazione predefinita il valore int è impostato 11. Fate clic su OK su quelli che appaiono senza inserire alcun numero. in questo tipo di errore non affronterai mai in futuro. Grazie 😊

in base all’ultima versione di MySQL (phpMyAdmin), aggiungi un INDICE corretto mentre scegli la chiave primaria. per esempio: id [int] INDICE 0, se id è la tua chiave primaria e al primo indice. O,


Per il tuo problema prova questo

 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; 

Ho anche avuto lo stesso problema.
La soluzione funziona per me:

 CREATE TABLE SE NON ESISTE `utenti` (
   `id` int (11) NOT NULL AUTO_INCREMENT,
   `username` VARCHAR (50) NOT NULL,
     `password` VARCHAR (50) NOT NULL,
     `dir` VARCHAR (100) NOT NULL,
   CHIAVE PRIMARIA (`sr_no`)
 ) ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3;

Incollo questo codice in SQL ed eseguo, funziona perfettamente.