我創建了一個Django視圖,它在從MySql DB讀取數據後返回一些數據。當我嘗試從數據庫中獲取大約6000行時,一切正常,視圖返回的HttpResponse的是expected.However我嘗試獲取7000+行我碰到下面的錯誤
Mysql無法創建/寫入文件錯誤#13
(1, "Can't create/write to file '/home/nipun/mysql_temp/MYzplJok' (Errcode: 13)")
早些時候,我認爲錯誤可能是由於空間越來越用盡/溫度,所以我改變了my.cnf中的tempdir設置
我還確保新的tmpdir/home/nipun/mysql_temp a nd通過更改所有權,它的父目錄可由我寫入。 雖然這不是一個Django的問題,這裏是視圖
def query_json(request):
from django.utils import simplejson
objects=Publisher.objects.filter(location='ROOM_01',sensor_name='CPU_TEMPERATURE').order_by('-id')[0:9000]
json = simplejson.dumps([{"reading": float(o.reading),
"timestamp": str(o.timestamp)
} for o in objects])
return HttpResponse(json,mimetype="application/json")
所以在更換過濾器9000〜6000工作正常。
有關錯誤的一些更多的信息在Django的堆棧跟蹤
errorclass
<class '_mysql_exceptions.InternalError'>
errorvalue
InternalError(1, "Can't create/write to file '/home/nipun/mysql_temp/MYuotga9' (Errcode: 13)")
error
(<class '_mysql_exceptions.InternalError'>,
InternalError(1, "Can't create/write to file '/home/nipun/mysql_temp/MYuotga9' (Errcode: 13)"))
編輯
作爲每一個評論規定,我想這對我的MySQL提示
mysql> CREATE TEMPORARY TABLE t (i int);
ERROR 1005 (HY000): Can't create table 't' (errno: 13)
所以它現在基本上是一個如何讓MySQL寫入臨時目錄的問題
'errno 13'是我的機器上的'EACCESS'(權限被拒絕)。你確定你已經設置了權限,所以用戶Django運行的可以寫入文件,而不僅僅是你? – 2011-12-26 06:18:46
當我嘗試和搶6000行或更少,它的作品。所以我猜的權限是好的 – 2011-12-26 06:20:32
這可能是因爲MySQL客戶端只需要創建一個臨時文件,當你抓取超過6000行... – 2011-12-26 06:23:21