簡體   English   中英

mysql 5.1.73加載數據本地文件錯誤

[英]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_INFILETRUE

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM