2010-11-22 207 views
7

我試圖做一個SELECT INTO OUTFILE,我發現了以下錯誤:SELECT INTO OUTFILE不能寫入文件

General error: 1 Can't create/write to file '/home/jason/projects/mcif/web/downloads/dump.csv' (Errcode: 13). Failing Query: " 
SELECT name 
INTO OUTFILE '/home/jason/projects/mcif/web/downloads/dump.csv' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
FROM account a 

我知道這個問題可能就是:我downloads文件夾不可由我的MySQL用戶寫入。我不知道如何解決這個問題的原因有兩個:

  • 我不知道如何找出 MySQL的用戶是什麼
  • 我不知道如何將MySQL的用戶添加到能夠寫入downloads文件夾的用戶

我在Ubuntu Linux上。有人能幫我克服這兩件事嗎?

+0

這是一個託管環境?如何調用SQL?如果它來自Web服務器,那麼用戶可能無論Web服務器用於運行請求處理程序。 – 2010-11-22 21:12:37

回答

10

寫入文件/tmp/dump.csv並複製它。這將讓你看到誰在運行什麼。我的猜測是,你從網上這樣做的,客戶端運行的Web服務器進程...

+0

你說得對。它是`www-data`。這照顧到問題1. – 2010-11-22 21:25:38

0

這裏有一個討論,可以幫助: How can I have MySQL write outfiles as a different user?

此外,請儘量避免左右着你的問題與絨毛。就你而言,你已經知道這是一個權限問題,所以你所有的SQL連接和表都不重要。您可以簡單地使用 選擇一個表格中的一個字段,以展示問題而不會混淆視聽。

0

客戶端可能會是mysqld。你必須改變apparmor授權,它會正常工作。檢查出this answer

7

的MySQL -u USERNAME --password = PASSWORD --database = DATABASE --execute = 'SELECT FIELDFIELD FROM TABLE LIMIT 0,10000' -X> file.xml

相關問題