[英]mysql 5.1.73 load data local infile error
我正在嘗試使用下面的代碼使用LOAD DATA LOCAL INFILE將數據加載到mysql表中。
將數據本地文件'unziped / product.csv'加載到表producttemp中,以',','',','包圍起來的字段以'\\'以'\\ r \\ n'終止的行
直到幾天前,我的腳本運行良好,但是托管公司將mysql更新為5.1.73,現在出現錯誤“此MySQL版本不允許使用的命令”。
我不知道服務器上以前是什么版本。此命令在mysql 5.3和5.5上也能正常工作
這里有什么問題?
我試圖谷歌,但找不到任何類似的問題
如果從PHP
代碼運行該命令,則可以在與MySQL服務器的連接上啟用LOAD DATA LOCAL INFILE
命令。
確切的過程取決於用於與MySQL通信的PHP擴展。
mysql
擴展名: 與通常一樣,將128
與可能需要的其他MYSQL_CLIENT_*
標志放入mysql_connect()
的參數$flags
OR
-ed中。 值128
啟用LOAD DATA LOCAL
處理,但沒有為其定義常量。 閱讀mysql_connect()
的文檔頁面。
// Put your connection parameters in $server, $username, $password as usual
$server = '127.0.0.1';
$username = 'root';
$password = '****';
// Put 128 bitwise OR-ed with other flags, if needed
$flags = 128;
// ... and connect
$link = mysql_connect($server, $username, $password, $new_link, $flags);
mysqli
擴展名: 使用mysqli_options()
函數將MYSQLI_OPT_LOCAL_INFILE
設置為TRUE
:
$link = mysqli_init();
mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, TRUE);
mysqli_real_connect($server, $username, $password);
如文檔中所述,這是使用mysqli_options()
的正確方法。
PDO
: 在PDO
構造函數的$options
參數PDO::MYSQL_ATTR_LOCAL_INFILE
選項PDO::MYSQL_ATTR_LOCAL_INFILE
為TRUE
:
$options = array(
PDO::MYSQL_ATTR_LOCAL_INFILE = TRUE;
);
$link = new PDO($dsn, $username, $password, $options);
可能是因為/etc/my.conf中的默認設置已更改。應該設置一個標志以使其再次起作用:
local-infile = 1
您也可以嘗試通過命令行連接,並顯式設置標志:
mysql --local-infile -u root -p db_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.