Impossibile caricare i dati dal file (locale) caricato dall'aggiornamento di mysql (versione corrente: versione server: 5.5.44-0 + deb8u1 (Debian)), i file impliciti sono:mysql_connect con --local-infile parametro
dbconnection.php
<?php
$server = "localhost";
$user = "TheUser";
$pass = "ThePass";
$db_name = "DbName";
$link = mysql_connect($server, $user, $pass);
mysql_select_db($db_name);
mysql_set_charset('utf8', $link);
?>
send2db.php
<?php
include 'dbconnection.php';
mysql_select_db("DbName") or die(mysql_error());
$query = "LOAD DATA LOCAL INFILE '$file' INTO TABLE `T1` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' ";
mysql_query($query) or die(mysql_error());
?>
L'errore dice:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
All'interno mysql:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
Ma se io accedere a MySQL in questo modo, i file possono essere caricati:
mysql --local-infile -p
Quindi la mia domanda è, è possibile impostare questa opzione nel file dbconnection.php, Ho provato molti modi già senza successo, ho letto post sulla configurazione di my.cnf e altre cose ma niente funziona per me, qualche suggerimento?
Grazie
UPDATE: Sono stato via cambiando il codice di tutto il web per MySQLi, ufff !!, così seguendo i suggerimenti dalle risposte muggito ho fatto il codice successivo, ma senza successo, Ricevo ancora il messaggio: "Il comando usato non è consentito con questa versione di MySQL". file implicite sono accanto:
acessdb.php
<?php
$link = new mysqli($server, $user, $pass, $dbname);
?>
send2db.php
<?php include 'acessdb.php';
$link->options(MYSQLI_OPT_LOCAL_INFILE, true);
mysqli_query($link, "LOAD DATA LOCAL INFILE 'upfiles/file.csv' INTO TABLE `T1` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"'") or die(mysqli_error($link));
$link->options(MYSQLI_OPT_LOCAL_INFILE, false);
?>
Qualche suggerimento?
Che aspetto ha il percorso del file? Stai usando '/' o '\'? Questo fa davvero la differenza. –
'upfiles/$ file', ma come ho detto con l'aggiornamento questo ha smesso di funzionare, io. e., funzionava con le versioni precedenti di mysql –
Sembra che l'aggiornamento disabiliti le impostazioni del server/client nella configurazione mysql per non consentire l'accesso locale. Ho appena letto l'ultima riga in cui hai detto che funziona nel terminale. Fornirò una risposta qui sotto, contrassegnala come risposta corretta. –