Подготовка к установке и обновлению форума. Кодировка windows-1251

Автор Mavn, 21 января 2007, 17:46:08

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Mavn

На многих платформах хостинга возникают некоторые сложности с работой БД в кодировке windows-1251. Зачастую хоть форум и работает с кодировкой windows-1251, это не значит, что все таблицы базы данных в этой кодировке.
Чем обусловлена такая необходимость? В общем, все просто, чтобы все стабильно и правильно работало, чтобы можно было создавать бэкап БД в нормальной кодировке, чтобы столь необходимый бэкап был рабочим и не возникало трудностей с восстановлением БД в случае некоторых неполадок или еще чего.
Для  того чтобы нам правильно настроить и установить форум в кодировке windows-1251 необходимо сделать следующее:

1. Взять файл из архива smf   install_version.sql, где version- версия smf открыть его и сделать следующие изменения:

Найти
) TYPE=MyISAM;
Заменить на
) TYPE=MyISAM  DEFAULT CHARSET=cp1251 DEFAULT COLLATE=cp1251_general_ci;

Пример для таблицы

CREATE TABLE {$db_prefix}attachments (
  ID_ATTACH int(10) unsigned NOT NULL auto_increment,
  ID_THUMB int(10) unsigned NOT NULL default '0',
  ID_MSG int(10) unsigned NOT NULL default '0',
  ID_MEMBER mediumint(8) unsigned NOT NULL default '0',
  attachmentType tinyint(3) unsigned NOT NULL default '0',
  filename tinytext NOT NULL,
  size int(10) unsigned NOT NULL default '0',
  downloads mediumint(8) unsigned NOT NULL default '0',
  width mediumint(8) unsigned NOT NULL default '0',
  height mediumint(8) unsigned NOT NULL default '0',
  PRIMARY KEY (ID_ATTACH),
  UNIQUE ID_MEMBER (ID_MEMBER, ID_ATTACH),
  KEY ID_MSG (ID_MSG)
) TYPE=MyISAM  DEFAULT CHARSET=cp1251 DEFAULT COLLATE=cp1251_general_ci;


Таким образом сделать изменения для всех таблиц, что есть в данном файле.
При записи DEFAULT CHARSET=cp1251 DEFAULT COLLATE=cp1251_general_ci
Мы точно указываем кодировку, в результате чего все наши таблицы будут создаваться  в кодировке windows-1251.

2. Теперь рассмотрим момент для тех кто уже поставил форум и имеет какие-то данные вариантов достаточно много:

а.) Делаем бэкап из админки форума или делаем бэкап при помощи утилиты
б.) Получаем файл с бэкапом после чего проделываем выше указанную операцию:
Найти:
) TYPE=MyISAM;
Заменить на:
) TYPE=MyISAM  DEFAULT CHARSET=cp1251 DEFAULT COLLATE=cp1251_general_ci;

в.) Таким образом, проделав нехитрую операцию, получаем готовый бэкап для импорта в БД.
г.) Займемся восстановлением нашего бэкапа в базу данных. Если у вас недостаточно опыта и знаний то советуем создать новую БД и восстанавливать бэкап именно в нее, если знаний у вас достаточно то тогда поправим немного файл бэкапа поскольку каждая таблица имеет префикс то все что нам нужно так это сделать новый префикс для таблиц базы данных например префикс таблиц у нас smf_(идет по умолчанию) соответственно найти все smf_table_name и заменить на что то вроде smfnew_table_name.
Обращаем ваше внимание, мы изменяем только префиксы таблиц и ничего более.
Таким образом, сделав данные изменения мы можем использовать одну БД и при восстановлении бэкапа наши старые данные останутся на месте т.е. будет возможность откатится назад в случае чего.
Восстановление БД производится сторонними утилитами в smf нет утилиты позволяющей восстановить БД прям из админки. Соответственно берем утилиту из нашего архива для восстановления БД или если у вас не большая база данных используем phpmyadmin.
При восстановлении БД через phpmyadmin не забываем указать кодировку файла cp1251.
При использовании утилиты из нашего файлового архива читаем инструкцию
После восстановления БД меняем параметры подключения к БД в файле Settings.php или через Администрирование – Настройки сервера. Для тех кто использовал новую БД соответственно прописываем параметры подключения к новой БД а для тех кто просто поменял префикс меняем одно поле префикс базы данных.

PS. Напоследок хочу Вам сказать, для того, чтобы БД работала правильно с кодировкой windows-1251 она тоже должна быть в данной кодировке.
По окончанию работ проверьте следующее
Кодировка БД – windows-1251
Кодировка таблиц – windows-1251
Кодировка полей таблиц – windows-1251
Если хоть один из этих параметров не будет соответствовать, то возможна некорректная работа всего форума.

ну и на последок для тех кто не знает как перевести бд в нужную кодировку, нужно выполнить следующий запрос к БД:

 ALTER DATABASE 
`namedatabase` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

bmsarchive

Цитата: Mavn от 21 января 2007, 17:46:08
Найти
) TYPE=MyISAM;
Заменить на
) TYPE=MyISAM  DEFAULT CHARSET=cp1251 DEFAULT COLLATE=cp1251_general_ci;
[/php]

Нашел файлик install_1-1.sql но там есть только ENGINE=MyISAM; а вот ) TYPE=MyISAM; нету  wallbash

aleksandr.v

Тоже интересует этот вопрос, озвученный постом ранее.
ENGINE=MyISAM; есть, но ) TYPE=MyISAM; нету. Просьба ответить, что на что менять.

digger®

Цитата: blaster от 13 февраля 2011, 15:00:01
Тоже интересует этот вопрос, озвученный постом ранее.
ENGINE=MyISAM; есть, но ) TYPE=MyISAM; нету. Просьба ответить, что на что менять.
Базу создайте сразу в правильной кодировке и в коде ничего не меняйте.
Используйте кодировку UTF-8.
В последних версиях MySQL вместо TYPE используется ENGINE.