nie można wczytać dane z przesłanego pliku (lokalnego) od modernizacji mysql (Aktualna wersja: Wersja serwera: 5.5.44-0 + deb8u1 (Debian)), pliki implikowane są:mysql_connect z --local-plik_we parametru
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());
?>
błąd mówi:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Wewnątrz MySQL:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
Ale jeśli mam dostępu mysql w ten sposób, pliki mogą być ładowane:
mysql --local-infile -p
Więc moje pytanie brzmi, czy mogę ustawić tę opcję w pliku dbconnection.php, Próbowałem już wiele sposobów bez powodzenia, czytałem posty o konfiguracji my.cnf i inne rzeczy, ale nic nie działa dla mnie, sugestia?
Dzięki
UPDATE: byłem z dala zmiany kodu całej sieci do mysqli, ufff !!, dobrze postępując zgodnie z sugestiami z odpowiedzi ryczeć Zrobiłem następny kod, ale bez powodzenia, Nadal dostaję komunikat: "Używana komenda nie jest dozwolona w tej wersji MySQL". Pliki implikowane są następne:
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);
?>
Wszelkie sugestie?
Jak wygląda ścieżka pliku? Czy używasz "/" lub "\"? To naprawdę robi różnicę. –
"upfiles/$ file", ale jak wspomniałem z aktualizacją, to przestało działać, i. e., działało z poprzednimi wersjami mysql –
Wydaje się, że tak jakby aktualizacja wyłączyła ustawienia serwera/klienta w konfiguracji mysql, aby nie zezwalać na lokalny plik typu "infile". Właśnie przeczytałem tę ostatnią linijkę, w której powiedziałeś, że działa ona w terminalu. Podam odpowiedź poniżej, proszę oznaczyć ją jako właściwą odpowiedź. –