04.07.2014, 17:17
Кто там жаловался на сброс кодировки после реконнекта.
Есть простое решение:
Нужно исправить код подключения:
И добавить перехватчик ошибок:
Такой код произведет повторное подключение с правильной кодировкой.
НО: последний запрос на котором соединение было разорвано будет утерян.
Его можно вызвать в этом месте но дополнительные параметры будут потеряны, если были:
Есть простое решение:
Нужно исправить код подключения:
pawn Код:
mysql_connect("localhost", "user", "db_name", "password", 3306, FALSE);//шестой параметр отвечает за автореконнект, отключаем его.
pawn Код:
public OnQueryError(errorid, error[], callback[], query[], connectionHandle) {
if (errorid == CR_SERVER_LOST) {
connectionHandle = mysql_connect("localhost", "user", "db_name", "password", 3306, FALSE);
mysql_query(connectionHandle, "SET NAMES cp1251;", FALSE);
mysql_query(connectionHandle, "SET SESSION character_set_server='utf8';", FALSE);
}
}
НО: последний запрос на котором соединение было разорвано будет утерян.
Его можно вызвать в этом месте но дополнительные параметры будут потеряны, если были:
pawn Код:
public OnQueryError(errorid, error[], callback[], query[], connectionHandle) {
if (errorid == CR_SERVER_LOST) {
connectionHandle = mysql_connect("localhost", "user", "db_name", "password", 3306, FALSE);
mysql_query(connectionHandle, "SET NAMES cp1251;", FALSE);
mysql_query(connectionHandle, "SET SESSION character_set_server='utf8';", FALSE);
if (strlen(callback)) {
mysql_tquery(connectionHandle, query, callback);
} else {
ysql_query(connectionHandle, query, FALSE);
}
}
}