Имеется также ((de Deutsch)) и ((../DatabaseConversion English))
{{toc numerate=1}}
file:/unicode.svg?right&100
Разработка инструкции не завершена.
В инструкции описана процедура преобразования кодировки базы данных из имеющейся (cp1251 для русскоязычных сайтов) в версиях R5 в Юникод в версии R6.
В процессе преобразования необходимо:
* перенести весь код и данные за один раз,
* отключить сайт на время преобразования,
* провести пробные проверки.
Пожалуйста, оставьте отзыв для улучшения этой инструкции.
===Пошаговая инструкция===
====Перед обновлением====
file:/utf8_conversion_script_1.png?right&400
1. Если в вашей базе есть таблицы типа MyISAM их все следует преобразовать в тип InnoDB через ((/Doc/Русский/АдминПанель АдминПанель))
* АдминПанель -> База данных -> Преобразование
1. Создайте ((/Doc/English/Backup резервные копии)) всей инсталляции, т.е. базы данных и файлов.
2. Создайте локальную инсталляцию самой свежей версии (или удаленную, при этом избегайте таймаутов и прекращения работы скрипта)
1. Импортируйте базу данных из резервной копии, учтите что импорт может занять около 15 минут.
2. Запустите **((source:6.0/community/action/admin_utf8.php скрипт конвертации))** с Админскими правами (-> см. действие ##""{{admin_utf8}}""## ниже).
1. Преобразуйте (alter) таблицы ##file##, ##page##, ##page_link## and ##revision## для работы без префиксов ключей длиннее **767** байт (**опционально**)
* MySQL версий до **5.7.7** или MariaDB до **10.2.2** по умолчанию не поддерживают ключ индекса префиксов больше, чем 767 байт (до 3072 байт).
* Рекомендуется (если есть возможность) обновить базы данных для поддержки больших индексов.
2. Преобразуйте вашу базу данных и таблицы в кодировку ##utf8mb4##
3. Преобразуйте данные записанные в различных кодировках (например Greek записана как Latin1)
* Это необходимо только в том случае, если вы запустили свою вики в мультиязычном режиме и были созданы страницы с другим кодовым набором.
4. **!!ПРОВЕРЬТЕ!!** через phpMyAdmin или Adminer все соответствующие колонки что преобразование прошло успешно до того, **как вы продолжите**!
* Например, скрипты могут не преобразовать столбец ##body## из-за прекращения работы по таймауту.
====Обновление до R6.0====
file:/wackowiki_r6_ru_upgrade_1.png?right&400&caption
1. Скачайте текущую версию R6.0.x
1. Выполните ((/Doc/Русский/Обновление обновление)) до 6.0.x через программу установки.
====После обновления==
file:/utf8_conversion_script_2.png?right&400
1. Выполните post-upgrade скрипт в ##""{{admin_utf8}}""##
1. Сбросьте увеличенные колонки TEXT обратно в TEXT или MEDIUMTEXT
2. Преобразуйте HTML-сущности в соответствующие символы Юникода
3. Удалите колонку ##converted## из таблиц
2. Удалите файл действия **admin_utf8.php** из папки ##action/##.
3. синхронизируйте обновленные данные через панель администрирования
((/Doc/Русский/Обновление <- Вернемся к заметкам по обновлению для 6.0.x.))
===Скрипт===
%% ln -s ../../community/action/admin_utf8.php admin_utf8.php%%
{{include page="/Dev/Release/R6.0/Upgrade/DatabaseConversion/Script"}}
====Локализация====
%%
['en']
'Utf8Utilities' => 'Unicode conversion utilities',
'Utf8PreUpgrade' => 'Pre-Upgrade Routines for R6.x',
'Utf8KeyPrefixes' => 'Alter tables to work without key prefixes longer than 767 bytes',
'Utf8AlterTablesStarted' => 'Alter tables started',
'Utf8Tables' => 'Tables: file, page, page_link and revision',
'Utf8ConvertDatabase' => 'Convert database and tables based on charset to',
'Utf8TableConversionStarted' => 'Table conversion started',
'Utf8TablesConverted' => 'Tables converted.',
'Utf8ConvertCrossCharset' => 'Convert all cross charset records',
'Utf8TablesConversionStarted' => 'Tables record conversion started',
'Utf8RecordsConverted' => 'Records converted',
'Utf8TablesRecordsConverted' => 'Tables records converted.',
'Utf8PostUpgrade' => 'Post-Upgrade Routines for R6.x',
'Utf8RemoveColumnConverted' => 'Remove column \'converted\' from tables',
'Utf8DropedColumnConverted' => 'Droped column \'converted\' from tables',
'Utf8ResetTextColumns' => 'Reset up-sized TEXT columns back to TEXT or MEDIUMTEXT',
'Utf8StartedTextConversion' => 'Started conversion of TEXT columns',
'Utf8ResetTextColumns' => 'Reset converted TEXT columns',
'Utf8ConvertHtmlEntities' => 'Convert HTML entities to their corresponding Unicode characters',
%%
%%
['ru']
'Utf8Utilities' => 'Функции для преобразования Юникода',
'Utf8PreUpgrade' => 'Pre-Upgrade Routines for R6.x',
'Utf8KeyPrefixes' => 'Измените таблицы для работы без ключевых префиксов длиннее 767 байт.',
'Utf8AlterTablesStarted' => 'Началась смена таблиц',
'Utf8Tables' => 'Таблицы: file, page, page_link и revision',
'Utf8ConvertDatabase' => 'Преобразование базы данных и таблиц на основе набора символов в',
'Utf8TableConversionStarted' => 'Начался пересчет таблиц',
'Utf8TablesConverted' => 'Таблицы преобразованы.',
'Utf8ConvertCrossCharset' => 'Преобразование записей в различных кодировках.',
'Utf8TablesConversionStarted' => 'Началось преобразование записей данных в таблицах',
'Utf8RecordsConverted' => 'Преобразование записей данных',
'Utf8TablesRecordsConverted' => 'Записи, преобразованные в таблицы.',
'Utf8PostUpgrade' => 'Процедура после обновления на R6.x',
'Utf8RemoveColumnConverted' => 'Удаляет колонку \'converted\' из таблиц.',
'Utf8DropedColumnConverted' => 'Колонка \'converted\' была удалена из таблиц.',
'Utf8ResetTextColumns' => 'Сбросить увеличенные колонки TEXT на TEXT или MEDIUMTEXT',
'Utf8StartedTextConversion' => 'Началось преобразование столбцов TEXT,
'Utf8ResetTextColumns' => 'Сбросить преобразованные колонки TEXT',
'Utf8ConvertHtmlEntities' => 'Преобразование HTML-сущностей в соответствующие символы Юникода',
%%