自升級mysql(當前版本:服務器版本:5.5.44-0 + deb8u1(Debian))以來,無法從上載(本地)文件加載數據,所隱含文件爲:mysql_connect與--local-infile參數
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());
?>
錯誤說:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
在MySQL:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
但是,如果我訪問MySQL這種方式,可以將文件加載:
mysql --local-infile -p
所以我的問題是,我可以在dbconnection.php文件中設置這個選項,我已經嘗試了很多方法,但都沒有成功,我一直在閱讀有關my.cnf配置和其他一些東西的帖子,但沒有任何適合我的任何建議?
感謝
UPDATE: 我已經離開更改代碼的整個Web的mysqli的,UFFF !!,以及下面的建議從答案波紋管我做了下面的代碼,但沒有成功,我仍然收到消息:「這個MySQL版本不允許使用命令」。隱含文件是下一個:
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);
?>
有什麼建議?
文件路徑是什麼樣的?你使用'/'還是'\'?這實際上是有區別的。 –
'upfiles/$ file',但正如我提到的更新這停止工作,我。也就是說,它與以前版本的mysql一起工作 –
看起來好像更新禁用了你的mysql配置中的服務器/客戶端設置,不允許local-infile。我剛剛讀到最後一行,你說它在終端中有效。我將在下面提供答案,請將其標記爲正確答案。 –