2013-05-27 82 views
0

我想從php代碼上傳一個csv文件到我的mysql數據庫中。 我得到一個錯誤:「無法更新:所使用的命令是不是跟這個版本的MySQL允許」php csv文件在mysql上傳

這是我使用的代碼。 我必須給予任何類型的權限,以便我能夠從PHP表單中完成。 因爲我能夠從終端直接從mysql加載這個相同的CSV文件。

附:我在閱讀這篇文章後更改了my.cnf文件。 MySQL: Enable LOAD DATA LOCAL INFILE

我怎麼都無法從phpmyadmin和php表單上傳。錯誤消息是相同的。即「無法更新:所使用的命令是不允許與此MySQL版本」

下面是一段代碼。

if(@$_POST['submit']) 
{ 
    $file = $_FILES['file']; 
    $name = $file['name']; 
    $type = $file['type']; 
    $size = $file['size']; 
    $tmppath = $file['tmp_name']; 
    echo "Name of the file is $name <br> $tmppath"; 
    if($name!="") 
    { 
     echo "<br> Trying to upload file <br>";   
     if(move_uploaded_file($tmppath, "csvfiles/.$name")) //project is a folder in which you will save csv files 
     { 
      $query="LOAD DATA LOCAL INFILE '$tmppath' INTO TABLE test.metadata FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;"; 
      mysql_query ($query) or die ('Could not updated:'.mysql_error()); 
      echo "CSV file inserted successfully !!<br>"; 
     }else {echo "<br>Failed !!!!";} 
    }else {echo "<br>No file exist <br>";} 
}else {echo " <br> No file exist <br>";} 
+0

你正在使用的MySQL版本似乎是一個合適的東西。 – leftclickben

+0

它的MySql 5.5,我可以從apt-get install命令獲得最新的一個。 – Ameya

回答

0

如果LOAD DATA LOCAL被禁止,無論是在服務器或客戶端,試圖發出這樣的聲明會收到以下錯誤消息客戶端:

ERROR 1148: The used command is not allowed with this MySQL version 

嘗試以下運行,如果UNIX

mysql_fix_privilege_tables --password=root_password 

或者Windows

C:\> cd "C:\Program Files\MySQL\MySQL Server 5.0" 
C:\> bin\mysql -u root -p mysql 
mysql> SOURCE share/mysql_fix_privilege_tables.sql 
+0

我使用的是Ubuntu 12.4,當我運行mysql_fix_privilege_tables --password = root_password時,它給了我找不到的錯誤命令。 – Ameya

+0

你可以運行'mysql_upgrade' – Yogus

+0

我得到這個錯誤。 無法在MySQL Servers datadir中創建升級信息文件'/ var/lib/mysql/mysql_upgrade_info',errno:13 – Ameya