Fork me on GitHub
28/4/2009

Что это было?

Часть читателей, видимо заметила некоторый период непонятного состояния блога. То 500 ISE, то работает, то таймаут, то "under maintenance", то опять 500 ISE. Другая часть получила кучу спама о новых комментариях.

В общем, дело оказалось довольно безхитростным, но наложившемся на форс-мажор на работе и отсутствием времени дома. До вчера у меня использовался SQLite как самый простой вариант базы данных. Но у этой "СУБД" есть один момент: при записи блокируется вся база целиком. Как следствие, если есть "долгоиграющий" процесс, открывший БД на запись, то все остальные с чтением обламываются.

В общем, вчера перед сном решил быстренько поменять SQLite на MySQL, понадеявшись на manage.py dumpdata/loaddata. Поскольку всё это планировалось "быстренько", то не удосужился проверить на домашней машине. В итоге, данные не перенёс, лёг поздно, блог отправил в maintenance mode. С утра встал, не выспался, удостоверился, что штатными средствами Django получаю от ворот поворот, начал писать небольшую "вещь" для миграции с SQLite на MySQL. После относительного разгребания груды дел на работе, протестировал на связке SQLite->PostgreSQL и SQLite->MySQL, и, немного "доточив", положил в песочницу: sandbox/movedb.

Ну и поскольку вы блог читаете, то значит данные я благополучно перенёс.

P.S. А еще эта штука сама разруливает порядок вставки таблиц с внешними ключами ;)

Комментарии

Все статьи