PHP, Mysql e "The used command is not allowed with this MySQL version"

Tags: 

Problema: in uno script PHP cerchiamo di eseguire il comando mysql: "LOAD DATA LOCAL INFILE ..."

(Quindi in genere cerchiamo di importare un file csv in una tabella mysql dal file system locale).

Lo script si blocca con un errore:

The used command is not allowed with this MySQL version

Mentre se proviamo a fare lo stesso comando direttamente da una shell Mysql funziona tutto (se non è così il problema è da cercarsi nella configurazione generale mysql).

 

Il problema è dovuto al fatto che la connessione a Mysql non specifica l'abilitazione dei LOCAL_FILES.

Per abilitarla direttamente va usato il flag "128" al comando mysql_connect o mysql_pconnect.

Esempio

mysql_pconnect($hostname, $username, $password, 128);

 

Il Flag 128 nelle costanti dei sorgenti della libreria mysql per PHP identifica:

#define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */

 

Ho trovato la costante qui:

http://www.php.net/manual/en/mysql.constants.php#mysql.client-flags

Aggiungi un commento