Господа, некоторое время назад начала ломаться БД. Приходят сообщения:
Database error in vBulletin :
mysql_connect() [
function.mysql-connect
]: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
/home/users/l/lawyer/domains/arbitraz.ru/includes/class_core.php on line 311
MySQL Error :
Error Number :
Request Date : Thursday, August 13th 2015 @ 02:30:15 AM
Error Date : Thursday, August 13th 2015 @ 02:30:37 AM
Script :
http://arbitraz.ru/showthread.php?t=56
Referrer :
IP Address : 157.55.39.93
Username :
Classname : vB_Database
MySQL Version :
Исходные данные:
В админке форума БД utf8
В БД cp1251
БД Post = кракозяблы
Проблема классифицирована zCarot:
http://vbsupport.org/forum/showthread.php?t=21925
Чёрные ромбы или пустые квадраты - текст из cp1251 отображается в utf8
Рецепты:
I.
http://www.bormotuhi.net/showthread.php?t=5281 & page=2
Мда, именно MySQL заменяет текст отличный от кодировки сравнения на вопросы.
Тут можно добавить только одно: существуют две.
эм... стадии этого заболевания: 1 - вопросики есть на сайте, но в базе нормальный текст.
Лечится сменой установок charset на стадии коннекта к базе.
2 - и на сайте и в базе вопросики.
БД безнадежна, ее надо выкинуть и попробовать достать нормальную из бекапов...
имеется ввиду раскомментировать вот эту строчку (которая внизу)?
// ****** MySQLI OPTIONS *****
// When using MySQL 4.1+, MySQLi should be used to connect to the database.
// If you need to set the default connection charset because your database
// is using a charset other than latin1, you can set the charset here.
// If you don't set the charset to be the same as your database, you
// may receive collation errors.
Ignore this setting unless you
// are sure you need to use it.
//$config['Mysqli']['charset'] = 'utf8';
II.
Попробовать в вариантах:
$config['Mysqli']['charset'] = 'utf8'; или $config['Mysqli']['charset'] = 'cp1251';
III.
Существует последовательность определения своих действий:
Используя PHPMyAdmin “залезть” в БД форума, и определить в какой кодировке находятся таблицы;
Определить кодировку Мускула (MySQL);
Предпринять действия к предотвращению проблемы.
Допустим, БД у нас в кодировке utf-8, а соединений мускула и его кодировка в ср1251.
Берем файл init.php с папки includes, находим там строчку (сразу после подключения):
Код:
{
vbulletin_demo_init_db();
}
И после этой строчки используем сия код:
Код:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
Все проблемы должны решиться.
Другая ситуация - БД в ср1251, Мускул в utf-8. Берем все тот же init.php, находим ту самую строчку:
Код:
{
vbulletin_demo_init_db();
}
И используем этот код:
Код:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Вот и все.
-------------------------------------------------
Внимание: Ниже - для версии 3.8! |
-------------------------------------------------
Найти:
Код:
// make $db a member of $vbulletin
Перед ней добавить:
Код:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Или
Код:
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
Вопросы:
1. В какой кодировке у меня MySQL.
2. В какой кодировке у меня форум.
3. Какой рецепт починки выбрать.
4. В связи с чем могла произойти поломка.
Заранее большое спасибо.
За мной не заржавеет, решение выложу здесь.