Перейти к содержимому
Русский язык для Invision Community 5

Ошибка при переносе форума из vB на IPB

Здравствуйте возникла проблема при переносе форума из vBulletin 4.0.3 на IPB 3.2.3, пользуюсь официальным конвертером, все идет нормально до тех пор, пока в одной из таблиц конвертер не сталкивается с русскими буквами, тогда выдается ошибка: "Возникла ошибка при работе с базой данных. К сожалению, на данный момент из-за технических проблем с базой данных, форум не может обработать ваш запрос. О проблеме уже сообщено администрации форума. Приносим свои извинения за причиненные неудобства", таблицы воблы изначально были в utf8, но даже после изменения кодировки на cp1251, ошибка не уходит. Прошу помощи!

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

Покажите проблемный запрос из логов /cache/sql_error*

  • Автор

Вот:

 

Date: Fri, 09 Mar 2012 11:30:17 +0000
Error: 1366 - Incorrect string value: '\xF0\xB0\xF0\xBB\xF0\xB5...' for column 'members_l_display_name' at row 1
IP Address: 127.0.0.1 - /admin/index.php?adsess=ae443e61339f82dc47cad6ff98b29222&app=convert&app=convert&module=board&section=vbulletin&do=members&st=&cycle=250&total=72
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mySQL query error: INSERT INTO ipbmembers (`title`,`last_visit`,`last_activity`,`last_post`,`posts`,`time_offset`,`bday_day`,`bday_month`,`bday_year`,`ip_address`,`misc`,`warn_level`,`conv_password`,`name`,`member_group_id`,`email`,`joined`,`member_login_key`,`member_login_key_expire`,`members_display_name`,`members_seo_name`,`members_l_display_name`,`members_l_username`,`members_pass_hash`,`members_pass_salt`,`mgroup_others`,`allow_admin_mails`) VALUES('????????N?????',1285963446,1285965180,1285962360,2,3,0,0,0,'94.233.112.166','',0,'8f7d52e1e86a3d077cfa9ee69d77517c','?°?»?µ??N??µ??',3,'XsilentXwindX@yandex.ru',1285958040,'b34065b5c3c9fbbcf43bab86e27c3988',1331897417,'?°?»?µ??N??µ??','%d0%b0%d0%bb%d0%b5%d0%ba%d1%81%d0%b5%d0%b9','?°?»?µ??n??µ??','?°?»?µ??n??µ??','','','',1)
.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| File                                                                       | Function                                                                      | Line No.          |
|----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
| Z:\home\192.168.0.111\www\admin\applications_addon\ips\convert\sources\lib_master.php| [db_main_mysql].insert                                                        | 1383              |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| Z:\home\192.168.0.111\www\admin\applications_addon\ips\convert\modules_admin\board\vbulletin.php| [lib_master].convertMember                                                    | 783               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
|                                                                            | [admin_convert_board_vbulletin].convert_members                               |                   |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| Z:\home\192.168.0.111\www\admin\applications_addon\ips\convert\modules_admin\board\vbulletin.php| [].call_user_func                                                             | 195               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| Z:\home\192.168.0.111\www\admin\sources\base\ipsController.php              | [admin_convert_board_vbulletin].doExecute                                     | 302               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'

Судя по всему данные в одной кодировке, сравнение у таблицы другая, а из бд данные запрашиваются еще в какой-то кодировке. Тут даже у этой строки пакоцаная кодировка "\xF0\xB0\xF0\xBB\xF0\xB5".

Капайте в ее сторону.

  • Автор

Хм, понятно, что копать нужно в эту сторону. Уже и так стоят кодировки обоих баз cp1251, всех таблиц в базах cp1251 и у всех полей в таблицах тоже cp1251. Куда дальше копать, что-то непонятно. Может быть где то в конвертере надо выставить cp1251?

Через phpmyadmin в таблице пользователей vB нормально видны ники?

 

Уже и так стоят кодировки обоих баз cp1251,

Конвертер работает только с базами в UTF8, о чем четко написано в инструкции - "если сторонняя база не в UTF8 - её надо перекодировать перед конвертированием". А вы сделали диаметрально противоположное. Вот только скрипт при старте выполняет "set names", и, естественно, давится кракозябрами.

  • Автор

Спасибо за разъяснения, но, к сожалению, и в этой кодировке работать не хочет в логах все тоже. Вот скрины:

 

8da3115c0892.jpg

 

11f6ba382c71.jpg

 

62544e41d37f.jpg

 

В данной ситуации все довольно сложно. Я могу сказать, как обойти конкретно данную ошибку - нужно в файле

/upload/admin/applications_addon/ips/convert/sources/lib_master.php найти и закомментировать эти строки:

	$members['members_l_display_name']	= strtolower($displayname);
	$members['members_l_username']		= strtolower($username);

А потом, уже после конвертирования, выполнить пару дополнительных SQL-запросов.

 

Но сам факт, что на этом этапе у вас на входе микс из разных кодировок, и strtolower крошит все в еще большее мессиво, как бы намекает, что все конвертирование скорее всего так просто успехом не закончится. Более того, если у вас после приведения двух баз к utf8 осталась в точности такая же ошибка конвертирования, то новости еще хуже - сам IP.Board явно использует не utf8 при взаимодействии с MySQL, что, скорее всего, не позволит ему нормально работать, а в результате конвертирования вы получите форум с кракозябрами и вопросиками...

 

Понятия не имею, что там у вас с конфигурацией сервера и как вы эту кашу заварили, но расхлебывать её надо явно не посредством форумного общения. Настоятельно рекомендую заказать платное конвертирование и конфигурирование сервера в IPS.

  • Автор

Спасибо огромное базу перенес, хоть и с горем пополам. Но проблемка все же есть, во всех таблицах данные есть и они читабельны, в АЦ тоже все читабельно, а вот на главной форума не отображается ни категорий, ни тем. Кеш чистил, статистику пересчитывал, конвертер заблокировал. Что сделал не так?

Права форумов настроили?

  • Автор

Совсем про это забыл :rolleyes: Осталась одна проблемка: новых пользователей не показывает в списке пользователей, там висит только мой ник

"Пара запросов", которые надо было выполнить, раз уж вы пошли таким путем:

 

UPDATE members SET members_l_display_name = LOWER(members_display_name), members_l_username = LOWER(name);

  • Автор

Не дождался вашего сообщения, сделал все ручками. :) Спасибо за помощь.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.