2012-03-19 45 views
0

我是Perl中的完整新手。我有這個小分Perl中的MySQL錯誤(Errorcode 2)

sub processOpen{ 
    my($filename, $mdbh)[email protected]_; 
    my($qr, $query); 

    # parse filename to get the date extension only 
    # we will import the data into the table with this extension 
    # /home//logs/open.v7.20120710_2213.log 
    my(@fileparts) = split(/\./, $filename); 
    my(@filedateparts) = split(/_/, $fileparts[2]); 
    my($tableext) = $filedateparts[0]; 


    $query = "LOAD DATA INFILE '" . $filename . "' INTO TABLE open_" . $tableext . " FIELDS TERMINATED BY '||' LINES TERMINATED BY '\n' 
       (open_datetime, open_date, period,tag_id)"; 

    $qr = $$mdbh->prepare($query); 
    $qr->execute(); # causes error (see below) 
    $qr->finish(); 
} 

而且我發現了以下錯誤:

DBD::mysql::st execute failed: Can't get stat of '/home/logs/open..v7.20120710_2213.log' (Errcode: 2) at /home/thisfile.pm line 32.

第32行是$qr->execute();

+0

這是一個「未找到文件」的gobbledegook版本。任何一個mysql都沒有權限訪問該目錄樹,或者該文件不存在。 – 2012-03-19 22:29:48

+0

謝謝,但文件在那裏,燙髮是正確的.... – Will22 2012-03-19 22:43:10

+0

文件名是'open..v7' ...有兩個點,還是'open.v7' ...有一個點? – mob 2012-03-19 22:52:43

回答

0

錯誤代碼2是最有可能「找不到文件」。

您的文件是否存在?請注意,如果您在與MySQL數據庫不同的主機上運行perl,則該文件必須位於數據庫主機上,而不是客戶端主機上。