Перейти к контенту
  • 0

Конвертер базы на PHP для русской IP.Board 3


Ritsuka

Вопрос

На данный момент в инструкции очень много сложного понаписано про экспорт базы, конвертирование через iconv и обратный импорт... Но почему бы не задействовать PHP и MySQL, они же прекрасно умеют конвертировать базы сами!

 

Вот примерный скрипт:

 <?php
// Database info

include("conf_global.php");

$dbhost = $INFO['sql_host'];
$dbuser = $INFO['sql_user'];
$dbpass = $INFO['sql_pass'];
$dbname = $INFO['sql_database'];

//---------------

header('Content-type: text/plain');

$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );
$db = mysql_select_db($dbname) or die( mysql_error() );

$sql = "ALTER DATABASE `".$dbname."` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";
$result = mysql_query($sql) or die( mysql_error() );
print "Database changed to UTF-8.\n";

$sql = 'SHOW TABLES';
$result = mysql_query($sql) or die( mysql_error() );

while ( $row = mysql_fetch_row($result) )
{
$table = mysql_real_escape_string($row[0]);
$sql = "ALTER TABLE $table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci";
mysql_query($sql) or die( mysql_error() );
print "$table changed to UTF-8.\n";
}

mysql_close($dbconn);
?>

 

Что думают об этом специалисты ibresource?

 

Только что успешно сконвертировал этим скриптом свой немалый форум, заняло порядка 20 сек... Для крупных форумов конечно имеет смысл сделать потабличное конвертирование через ajax...

Изменено пользователем Ritsuka
  • Лайк 1
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 103
  • Создана
  • Последний ответ

Лучшие авторы в этом вопросе

Лучшие авторы в этом вопросе

Загружено фотографий

Рекомендуемые сообщения

  • 0
ждём что ответят специалисты ibr

Им логичнее написать -- Заказать услугу по конвертации базы форума в нашем клиент-центре. :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Сконвертировал приведенным скриптом базу форума (~50 тыс постов), поставил ipboard 3, ip.blog, ip.gallery - все работает. Не знаю как у других клиентов/на иных серверах, но на моем (PHP 5.2.9, MySQL 5.0.77) с этим скриптом все отработало идеально, без нужды в SSH.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да мы в общем то не настаиваем на конкретных способах конвертации, делайте как удобнее вам или как умеет, главное чтобы действительно все сконвертировалось.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

после конвертации начинаю обновление:

в пункте Конверктация пишет:

После того как ваша база будет в правильной кодировке, повторно запустите скрипт обновления.

странно, но я же переконвертировал уже

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Значит ваш форум куда как тяжелее моего. Об этом сказано в первом топике - скрипт нужно доработать с использованием ajax.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да я проверил, оно уже в UTF-8 с помощью скрипта получилось, правда пришлось прописать:

 

php_value max_execution_time 60

 

Но при обновлении форума пишет

После того как ваша база будет в правильной кодировке, повторно запустите скрипт обновления
Ссылка на комментарий
Поделиться на других сайтах

  • 0

а) саму базу данных тоже нужно перевести в UTF-8

ALTER DATABASE `%название базы%` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

 

б) внести все изменения в conf_global.php как указано в инструкции.

 

Внес запрос из а) в скрипт.

 

Не знаю, как скрипт отработает на таблицах уже в utf-8.... Будет ли что-то портить, или нет? Соответственно отсюда будет ясно, нужна ли проверка....

Ссылка на комментарий
Поделиться на других сайтах

  • 0

использовал этот скрипт в первом посте, затем выполнил запрос:

ALTER DATABASE `моя_база` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

в conf_global.php добавил:

$INFO['sql_charset']			=	'utf8';

и убрал как в инструкции

$INFO['mysql_codepage']			=	'cp1251';

начал обновлять с 2.3.5

/admin/upgrade/index.php

в итоге при третьем шаге "конвертация" всё равно пишет

"Для полноценной работы 3-ей версии форума необходимо чтобы база форума была в кодировке utf-8. База вашего форума отлична от нее."
Ссылка на комментарий
Поделиться на других сайтах

  • 0
в итоге при третьем шаге "конвертация" всё равно пишет
"Для полноценной работы 3-ей версии форума необходимо чтобы база форума была в кодировке utf-8. База вашего форума отлична от нее."

Все сырое ... ;)

 

Если есть цель поставит, посмотреть, то:

У меня было аналогично, при всех конвертациях.

В \admin\setup\applications\upgrade\sections\convert.php в проверке utf8 заменил FALSE на TRUE :D Все инсталлировалось нормально.

 

Но это не рабочий форум. На рабочем, не советую, ищите ошибку.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

пробовал там проблема в том, что база большая очень...

а там написано:

После того как текст переведен в UTF-8, необходимо поправить инструкции в этом тексте, чтобы сама база работала с ним как с UTF-8. А именно есть две команды SET NAMES и DEFAULT CHARSET. На базе cp1251 они выглядят так

 

SET NAMES cp1251

) ENGINE=MyISAM DEFAULT CHARSET=cp1251

 

В нашей резервной копии таких команд больше чем две. Значит нам нужно их заменить во всем файле на

 

SET NAMES utf8

) ENGINE=MyISAM DEFAULT CHARSET=utf8

В итоге любой редактор виснет при открытии или при сохранении файла базы, атк как вес самой базы велик очень

 

в итоге при третьем шаге "конвертация" всё равно пишет
"Для полноценной работы 3-ей версии форума необходимо чтобы база форума была в кодировке utf-8. База вашего форума отлична от нее."

Все сырое ... ;)

 

Если есть цель поставит, посмотреть, то:

У меня было аналогично, при всех конвертациях.

В \admin\setup\applications\upgrade\sections\convert.php в проверке utf8 заменил FALSE на TRUE :D Все инсталлировалось нормально.

 

Но это не рабочий форум. На рабочем, не советую, ищите ошибку.

 

Спасибо, сработало, теперь всё в порядке.... и вправду всё сырое ещё(

Придётся так на форуме не тестовом делать, а о последствиях замены там FALSE на TRUE кто-нить может сказать?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Придётся так на форуме не тестовом делать,

Я нашел свою ошибку, типа сам виноват. Инсталлировалось все нормально.

 

а о последствиях замены там FALSE на TRUE кто-нить может сказать?

Надо смотреть. Подозреваю, если кодировка самих таблиц нормальная, то не должно. Но гарантировать не могу. В выходные посмотрю родной инсталятор.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ну вот, проблема не в конверторе значит ^^"

 

Да и какая в нем может быть проблема, собственно.... все функции конвертации стандартные, описаны в доках по MySQL.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В процессе конвертации базы по инструкции IBR обнаружил топик - жалею, что не увидел его раньше.

 

Подскажите, что авторы хотели сказать фразой:

После того как восстановление будет завершено. При помощи phpMyAdmin или схожего по возможности инструмента, проверяете, что все таблицы теперь имеют сравнение utf8_general_ci, и все данные внутри таблиц нормально отображаются.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Подскажите, что авторы хотели сказать фразой:
После того как восстановление будет завершено. При помощи phpMyAdmin или схожего по возможности инструмента, проверяете, что все таблицы теперь имеют сравнение utf8_general_ci, и все данные внутри таблиц нормально отображаются.

Они имели ввиду, что надо визуально в phpMyAdmin посмотреть кодировку таблиц.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
При помочи вашего скрипта всё конвертировалось 3-4 минуты (база 300+ Мб), но теперь все разделы пустые. Хочется верить, что когда все процедуры по установке закончатся - всё будет в порядке :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Еще скажите, что на своем рабочем фруме без предварительного бекапа все это делали ><

 

Так, во избежание каких-либо вопросов, наездов и прочего - выложенный мною скрипт - это инструмент, с помощью которого я сконвертировал базу для себя. У меня все прошло без проблем, форум сконвертировался и работает. Что не означает что у вас не будет проблем.

 

Скрипт гарантированно переводит базу в utf-8 и только. Это означает, что в инструкции можно пропустить только операции конвертирования базы, все остальные операции по прежнему нужны! Если в результате обновления у вас возникают какие-либо ошибки - спрашивайте в теме про обновление. Если считаете, что ошибки возникают из-за этого конвертера - сконвертируйте базу по инструкции от ibresource, убедитесь в обратном и спрашивайте в теме про обновление.

 

И напоследок: никогда не выполняте операций на рабочем форуме! Как минимум снимите полный бекап прежде чем что-либо делать!

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да нет, я без претензий. Просто процесс долгий и волнительный - до сих пор проходит пересчёт и передел там чего-то. Как закончит - думаю всё появится, тем более что новые темы отлично работают.

 

База сконвертировалась без проблем - большое вам спасибо (предложенный IBR SypexDumper не справился).

Ссылка на комментарий
Поделиться на других сайтах

  • 0
(предложенный IBR SypexDumper не справился).

Он меняет кодировку таблиц, а не меняет кодировку базы.

Скрипт от Ritsuka, работает проще и правильнее.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
всё сделал всё хорошо, только пару слов нету в админке, вместо них просто пустое место.... что посоветуете?

Ну тут я вряд ли чем смогу помочь, попробуйте создать отдельную тему и подкрепить слова скриншотом =)

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.