我创建了一个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