Author Avatar

Fabrizio S.

0

Share post:

E adesso vi parliamo del problema #1089 – Incorrect prefix key del database Mysql e degli script PHP. Si tratta di un problema che capita sovente con phpmyadmin.
O meglio si tratta di un problema che si verifica spesso in quei programmatori che utilizzano il phpmyadmin per accedere al loro database mysql. Anche se qualche volta abbiamo riscontrato il problema anche con gli script lato server come il PHP. Ovviamente diciamo questo script perchè con tale database è quello comunemente più utilizzato.

La stranezza del phpmyadmin è che il più delle volte lo script che tenta di introdurre nel database MySql è errato. Ossia voi avete compilato correttamente tutti i campi richiesti . Insomma non si tratta di un vostro errore.

Spiegata la tipologia di problema andiamo a cerca rei capire cosa sia questo #1089 – Incorrect prefix key

 

 #1089 - Incorrect prefix key
Purtroppo come potete leggere togliendo il riferimento al nome, la descrizione dell’errore che viene rivelata da SQL è fuoriviante. Ossia dice la chiave prefisso è scorretta. Generalmenta si va a vedere la compilazione di tutti i campi delle tabelle del dabase. Ma risulta evidente che poi l’errore non è li.
Vediamo tutto meglio con un esempio. Questo è un tipico script che ho copia incollato direttamente dal PHPMyadmin

CREATE TABLE `scheda`.`utente` (
 `id` INT(3) NOT NULL AUTO_INCREMENT,
 `nome` VARCHAR(150) NOT NULL,
 `chiavesegreta` VARCHAR(150) NOT NULL, 
 PRIMARY KEY (`id`(3))
) ENGINE = MyISAM;

Come potete vedere nulla di trascendentale ho cercato di creare due tabelle una l’ho chiamata scheda l’altra utente. Ho eseguito il codice e ho ricevuto

#1089 – Incorrect prefix key

A prima vista il codice appare formalmente corretto. Andiamo direttamente invece all’errore ossia. Che vi ripeto in questo caso è stato introdotto non da me , ma dal software lato server di cui sopra.

PRIMARY KEY (`id`(3))

Come potete vedere accanto a id è riportata la dimensione del campo integer ossia 3.

Il problema nasce proprio da qui i primi 11 caratteri per SQL devono essere usati unicamente per creare un indice. La Prefix Key ammesse sono unicamente char, varchar, binary and varbinary mentre 3 è palesemente un integer. E questo genera l’errore. Come vi avevo già detto per qualche motivo che non conosco questa ridondanza id(3) è generata da script lato server come PHPMyadmin ma è scorretta. Quindi lo script corretto come da precisazione esposta è

PRIMARY KEY (`id`)

E vedrete che il problema #1089 – Incorrect prefix key

verrà automaticamente risolto.

Lezioni di Elettrotecnica 2.4. Potenza in regime di corrente continua
Le nuove versioni di Wordpress mandano in pensione Internet Explorer.