Записки разработчика

07.11.2017

Django Ошибка дампа данных Matching query does not exist

Поделюсь решением проблемы возникающей при попытке сделать дамп данных проекта:

Выполняя команду:

(env)➜  myproject git:(master) ✗ python project/manage.py dumpdata --natural-foreign --exclude auth.permission --exclude contenttypes --exclude admin.logentry --indent 4 > dump.json

Получил ответ:

CommandError: Unable to serialize database: MyModel matching query does not exist.

Где MyModel — имя модели, в моём случае это была AccountUser.

Ошибка сравнительно не информативная, гугление ничего особого не дало. Пришлось залезть в код фреймворка Django, в частности в ту часть где происходит дамп данных:

cd ../env/lib/python2.7/site-packages/django/core/management/commands
vi dumpdata.py

Видим что исключение выбрасывается на 208 строке:

raise CommandError("Unable to serialize database: %s" % e)

Пришлось закомментировать блок чтобы вываливало ошибку а не обрабатывало исключение. В итоге получаю по бэктрейсу (backtrace) ошибки вижу что проблема в django/db/models/query.py в исключении DoesNotExist с описанием : «matching query does not exist»

Вывожу разные переменные (print не работает), через это описание ошибки. Видно что всё по нулям. В итоге вывел self.query.

Он мне вывел запрос — который — я его выполнил в sql — выдал что да, этот запрос выдает результат нуль записей, из-за чего ошибка, собственно, и генерируется.

А дело всё в том, что у меня есть связанная таблица через ForeignKey (другая, скажем AccountCompany), и так получилось что там есть записи, которые ссылаются на AccountUser, но в AccountUser таких записей уже нет.

В общем, почистил вторую таблицу, «брошенных» записей нет, и вуаля! Дамп происходит как и должен. Не забудьте только убирать ваши изменения в библиотеках.

admin @ 02:50


05.11.2017

ZXTune123 слушаем тёплые восьмибитные треки

Есть классный проигрыватель чиптюнов ZXTune123. Здесь собраны некоторые советы по работе с этой программой.

http://zxtune.bitbucket.io/

если выпала ошибка:

Error in OSS backend while working with device '/dev/mixer'

запустить можно попробовать так. Где filename.ext — имя файла трекерной музыки

zxtune123 --alsa = filename.ext
zxtune123 --mp3 filename='filename' track.ext
zxtune123 --loop --alsa device=hw:0,mixer=PCM filename.ext

Конечно, особенная «теплота» реализуема лишь на «теплом» железе, поэтому в будущем будет цикл статей по созданию проигрывателя чиптюнов через специализированные процессоры.

admin @ 14:28


 

Powered by WordPress