pozitronik: (Default)
[personal profile] pozitronik
Есть у меня, кроме всего прочего, давний проект - http://tckb.ru. Начинался он как chm-сборник всякой полезной околототаловской шняги, потом перерос в вебдванольный сайтик на движке MediaWiki. Я, в плане всяческой каталогизации и упорядочивания настоящий маньяк, и угробил на сайтик кучу сил и времени (да и не я один, в общем-то).
Но сейчас речь не о том.
Сайтик многократно ломался, затем чинился, совершенствовался и ломался вновь. В основном, поломки происходили из-за переедов сервера или апгрейдов софта на нём.
Изначально движок работал себе на четвёртом мускуле. И, скорее всего, сконфигурирован был на хранение текстовых данных в старом-добром win1251. Я, в те времена веб-программированием даже не думал заниматься, и о поддержке utf8 не беспокоился. Возможно, были ещё какие-то причины, не помню уже.
Потом мускуль на серваке обновили, и старый движок работать с ним не захотел. Или что-то ещё случилось, в общем, пришлось отлично работающий, хоть и устаревший немного двиг обновить. Обновление стало, по какой-то причине, писать данные в базу в utf8. Что, в общем, проблем не вызывало - как бы не была сконфигурирована база, данные всё равно обрабатываются движком, а он что пишет, то и читает. С предыдущими данными были какие-то проблемы, но они решались без моего участия - видимо админ попросту прописал нужные кодировки в collate.
А уже не так давно серваки стали переезжать на пятый мускуль. Я, памятуя о прошлых багах при обновлении, просил оставить как есть, но ради одного сайтика держать устаревший софт не стали.
После обновления всплыла знаменитая проблема - в русских текстах покоцались буквы "И" (заглавная) и "ш" прописная. Причём покоцалось только в той таблице, которая обеспечивает всю структуру вики-сайта (page), а таблица, хранящая данные (text) осталась неизменной. Зато в этой таблице, как я с ужасом обнаружил, данные перемешались в непотребную кашу: что-то было в нормальном utf8, что-то оставалось в win1251, а что-то изначально было в utf, но потом считывалось движком как win1251 а писалось снова как utf, что давало результат вроде "Неучтенные_РЅР" в лучшем случае. Разобрать где что - невозможно.
К счастью последние версии всех страниц оказались таки в utf8. Остальное, в принципе, можно бы было отбросить, максимум пострадала бы история правок, что ни разу не страшно.
Но проблема с покоцанными буквами в заголовках не отбрасывалась. Страницы, где оказались эти злосчастные буквы оказались просто недоступны. Прямое изменение текста заголовков прямо в БД результата не дало - страницы всё равно оказывались названы старыми именами, и продолжали оставаться всё такими же недоступными. Копаться в сорока одной таблице базы (даже имея на руках подробный мануал и схему базы - легко гуглятся) мне было уже лень, потому был написан простой запрос, выдаваший таблицу в виде: "Заголовок страницы|Последняя ревизия страницы". Дамп этой таблицы (весивший в 15 раз меньше полного дампа базы) я собирался импортировать на поднятую на том же сервере копию сайта, но опять же, оказалось, что в заголовке страницы содержится... только заголовок страницы. А что это за тип (обсуждение, категория, файл и т.д.) понятно не было.
Пришлось покопаться в документации. Оказалось, что за тип страницы отвечает поле page_namespace в той же таблице page. Поле оказалось целочисленным, а константы, обозначающие тип, легко нашлись в svn MediaWiki.
Запрос был слегка поправлен, и на выходе получилась вполне нормальная табличка со всеми нужными данными. Затем она была выгружена в xml, который я тут же написанным скриптом подготовил для импорта в заново установленный движок.
Перенести пользователей и изображения оказалось просто даже вручную.
В результате имею правильно, с учётом предыдущих ошибок, сконфигурированный движок и базу данных и почти все данные из предыдущего сайта. Потерялась только история правок, что, как я уже писал, не волнует никого.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
No Subject Icon Selected
More info about formatting

December 2016

S M T W T F S
    123
45678910
1112131415 1617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 10th, 2025 06:43 am
Powered by Dreamwidth Studios