Перейти к содержимому


Фотография

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

Форумы IBResource

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 103
Ritsuka
  • Участники
  • Cообщений: 2 437

Отправлено

На данный момент в инструкции очень много сложного понаписано про экспорт базы, конвертирование через 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: 06 Август 2009 - 12:31

  • Miracl это нравится

Nutsyy
  • Участники
  • Cообщений: 479

Отправлено

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

Ph-A
  • Участники
  • Cообщений: 1 330

Отправлено

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

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

Ritsuka
  • Участники
  • Cообщений: 2 437

Отправлено

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

GiV
  • Участники
  • Cообщений: 5 513
  • http://www.wtf.sh/
  • Город:да

Отправлено

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

Nutsyy
  • Участники
  • Cообщений: 479

Отправлено

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

Ritsuka
  • Участники
  • Cообщений: 2 437

Отправлено

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

Nutsyy
  • Участники
  • Cообщений: 479

Отправлено

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

php_value max_execution_time 60

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

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



Ritsuka
  • Участники
  • Cообщений: 2 437

Отправлено

а) саму базу данных тоже нужно перевести в UTF-8
ALTER DATABASE `%название базы%` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

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

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

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

Nutsyy
  • Участники
  • Cообщений: 479

Отправлено

использовал этот скрипт в первом посте, затем выполнил запрос:
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. База вашего форума отлична от нее."



Ritsuka
  • Участники
  • Cообщений: 2 437

Отправлено

Nutsyy, а по инструкции от IBResource пробовали конвертировать базу? Может у вас какая иная ошибка...

Ph-A
  • Участники
  • Cообщений: 1 330

Отправлено

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

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

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

Если есть цель поставит, посмотреть, то:
У меня было аналогично, при всех конвертациях.
В \admin\setup\applications\upgrade\sections\convert.php в проверке utf8 заменил FALSE на TRUE :D Все инсталлировалось нормально.

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

Nutsyy
  • Участники
  • Cообщений: 479

Отправлено

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

После того как текст переведен в 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 кто-нить может сказать?

Ph-A
  • Участники
  • Cообщений: 1 330

Отправлено

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

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

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

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

Ritsuka
  • Участники
  • Cообщений: 2 437

Отправлено

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

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

ZiDaNe
  • Участники
  • Cообщений: 412
  • http://www.pfpl.ru
  • Город:РФ, Санкт-Петербург
  • Интересы:Футбол

Отправлено

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

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

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



nemec2000
  • Участники
  • Cообщений: 1

Отправлено

Спасибо, я с этим ссх мучался! :D

FarStar
  • Участники
  • Cообщений: 106

Отправлено

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

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

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

ZiDaNe
  • Участники
  • Cообщений: 412
  • http://www.pfpl.ru
  • Город:РФ, Санкт-Петербург
  • Интересы:Футбол

Отправлено

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

Ritsuka
  • Участники
  • Cообщений: 2 437

Отправлено

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

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

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

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




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных