Newsgroup: it.comp.www.php
Titolo: Errore su LOAD DATA LOCAL INFILE verso MariaDB (Debian Bookworm)

Salve,
 
se mi loggo all'interno di MariaDB e lancio il seguente comando tutto 
funziona:
 
MariaDB [my_database]> source query.sql;
 
Di seguito il contenuto di query.sql
 
USE my_database;
TRUNCATE items_temp;
 
LOAD DATA LOCAL INFILE '/home/itoffice/data_bridge/items.txt'
INTO TABLE items_temp
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id_tc_anartic, cod_art, desc_art, ump, umi, coef_ump_umi, gest_maga, 
cod_iva, cod_cat_cont, desc_cat_cont, cod_class_pat, art_stato,
disabilitato, ean, peso_netto, peso_lordo, um_peso, lunghezza, 
larghezza, altezza, diametro, cod_cat01, desc_cat01,
cod_cat02, desc_cat02, cod_cat03, desc_cat03, cod_cat04, desc_cat04, 
cod_cat05, desc_cat05, cod_cat06, desc_cat06, cod_cat07,
desc_cat07, cod_cat08, desc_cat08, cod_cat09, desc_cat09, cod_cat10, 
desc_cat10, cod_cat11, desc_cat11, cod_cat12, desc_cat12,
cod_cat13, desc_cat13, cod_cat14, desc_cat14, cod_cat15, desc_cat15, 
cod_cat16, desc_cat16, cod_cat17, desc_cat17, cod_cat18,
desc_cat18, cod_cat19, desc_cat19, cod_cat20, desc_cat20, dt_creazione, 
dt_last_upd);
 
Quindi cosa ci vuole a metterlo in uno script php?
 
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
 
// Parametri da inserire per collegarsi al DB
$servername = "localhost";
$username = "my_user";
$password = "my_password";
$database = "my_database";
$options = [MYSQLI_OPT_LOCAL_INFILE => true];
$conn = mysqli_connect($servername, $username, $password, $database);
$conn->options(MYSQLI_OPT_LOCAL_INFILE, true);
 
if (!$conn) {
     die("Connessione al database fallita: " . mysqli_connect_error());
}
 
// Query SQL
$query = "USE my_database;
TRUNCATE items_temp;
 
LOAD DATA LOCAL INFILE '/home/itoffice/data_bridge/items.txt'
INTO TABLE items_temp
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id_tc_anartic, cod_art, desc_art, ump, umi, coef_ump_umi, gest_maga, 
cod_iva, cod_cat_cont, desc_cat_cont, cod_class_pat, art_stato, 
disabilitato, ean, peso_netto, peso_lordo, um_peso, lunghezza, 
larghezza, altezza, diametro, cod_cat01, desc_cat01, cod_cat02, 
desc_cat02, cod_cat03, desc_cat03, cod_cat04, desc_cat04, cod_cat05, 
desc_cat05, cod_cat06, desc_cat06, cod_cat07, desc_cat07, cod_cat08, 
desc_cat08, cod_cat09, desc_cat09, cod_cat10, desc_cat10, cod_cat11, 
desc_cat11, cod_cat12, desc_cat12, cod_cat13, desc_cat13, cod_cat14, 
desc_cat14, cod_cat15, desc_cat15, cod_cat16, desc_cat16, cod_cat17, 
desc_cat17, cod_cat18, desc_cat18, cod_cat19, desc_cat19, cod_cat20, 
desc_cat20, dt_creazione, dt_last_upd)";
 
if (mysqli_multi_query($conn, $query)) {
     echo "Query eseguita con successo.";
} else {
     echo "Errore nell'esecuzione della query: " . mysqli_error($conn);
}
 
mysqli_close($conn);
?>
 
Questo è il risultato:
$ php articoli_test3.php
Query eseguita con successo. (ma di fatto è stato in grado di eseguire 
solo TRUNCATE).
 
Ho modificato anche il file php.ini ma... nisba :\
; Allow accessing, from PHP's perspective, local files with LOAD DATA 
statements
; 
https://php.net/mysqli.allow_local_infile
 
mysqli.allow_local_infile = On
 
Cosa potrei controllare ulteriormente?
 
^Bart

 
"USE my_database" non è ridondante?
L'utente è abilitato?
Che errore ti da?
 
Ciao

 Ciao
 
Saluti.
^Bart