Я создал представление Django, которое возвращает некоторые данные после чтения из базы данных MySql. Когда я пытаюсь извлечь около 6000 строк из базы данных, все работает нормально, и представление возвращает HttpResponse, как и ожидалось. Однако при попытке получить 7000+ строк я получаю следующую ошибку
(1, "Can't create/write to file '/home/nipun/mysql_temp/MYzplJok' (Errcode: 13)")
Ранее я думал, что ошибка может быть связана с тем, что для / temp было исчерпано пространство, поэтому я изменил настройку tempdir в my.cnf
Я также гарантировал, что новый tmpdir / home / nipun / mysql_temp и его родительские каталоги будут доступны для записи при смене владельца.
Хотя это не проблема 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)"))
EDIT
Согласно комментарию, я попробовал это в моей подсказке MySQL
mysql> CREATE TEMPORARY TABLE t (i int);
ERROR 1005 (HY000): Can't create table 't' (errno: 13)
Так что теперь по сути вопрос о том, как разрешить MySQL писать во временный каталог