|
|
Инструкции, модификации и статьи для DLE Сборник инструкции, модов и статей по движку DataLife Engine |
|
Опции темы | Поиск в этой теме |
02.04.2012, 23:23 Вверх | #1 | |||
Коварный тип
|
Конвертирование кодировки базы данных DLE средствами сервера по SSH
Конвертирование кодировки базы данных DLE средствами сервера по SSH
Иногда при использовании больших баз данных, например при размерах более одного гигабайта, конвертирование БД в ту или иную кодировку становится не возможным при использовании текстовых редакторов или PHP скриптов, в связи с их ограниченными возможностями. Для таких случаев прекрасно подходят достаточно быстрые операции с использованием SSH, о чем собственно и пойдет речь в данной статье. Итак рассмотрим как изменить кодировку базы данных для DLE прямо на сервере с использованием shell (SSH) на примере операционной системы CentOS 5. Если база данных очень большая, то для начала идем к файлу конфигурации MySQL сервера my.cnf и меняем в нем временно значение строк max_allowed_packet на большее. Т.е., например: PHP код:
PHP код:
PHP код:
1. Делаем дамп последней базы данных используя раздел админки "Управление базой данных". Дамп обычно имеет название что-то вроде 2012-03-16_02-10_user_base_55e2d753e9072ed783a2258bbf2d6106.sql.gz Распакуем его командой: PHP код:
PHP код:
PHP код:
3. Теперь у нас есть база данных в нужной нам кодировке windws-1251 и нам нужно выставить правильные DEFAULT CHARSET для всех таблиц. Делаем это командой: PHP код:
4. Теперь можно восстановить этот дамп, который уже полностью поддерживает кодировку windows-1251, и сразу создать новую базу данных (или указать существующую - таблицы будут перезаписаны) командой: PHP код:
Дополнительно... Если вы планируете установить новую базу данных на другом домене, то вы можете сразу сменить имя домена по всей базе данных на новое и затем восстановить базу данных. Пример такой замены: PHP код:
Примечание: Если у вас в процессе создания или восстановления базы данных возникают ошибки сервера, то это обычно связано с маленькими лимитами max_allowed_packet в my.cnf (увеличивайте на очень больших базах пока не пропадет ошибка) или с нехваткой времени выполнения скрипта (время увеличивайте в php.ini или через панель управления). Автор: ower_xz |
|||