Ошибка в Coppermine Photo Gallery

CPG версии 1.5.6, когда выбран русский язык, может выдавать следующую ошибку при клике на пункт «Моя галерея» обычным зарегистрированным пользователем:

Критическая ошибка
Произошла ошибка при обращении к базе данных

В случае включения режима отладки выдается дополнительная информация:
While executing query 'SELECT CONCAT(a.title, ' - Из категории: <i>', c.name, '</i>') AS cat_name FROM cpg1_albums AS a LEFT JOIN cpg1_categories AS c ON a.category=c.cid WHERE a.owner=2 ORDER BY a.category DESC , a.pos LIMIT 0,1' in index.php on line 754

mySQL error: Illegal mix of collations for operation 'concat'

Данную ошибку можно «вылечить» следующим образом:
Найти в index.php строку:

753
$cat_name_sql = "SELECT CONCAT(a.title, '" . $lang_list_albums['from_category'] . "<i>', c.name, '</i>') AS cat_name FROM " . $CONFIG['TABLE_ALBUMS'] . " AS a LEFT JOIN " . $CONFIG['TABLE_CATEGORIES'] . " AS c ON a.category=c.cid WHERE a.owner=" . $USER_DATA['user_id'] . " ORDER BY a.category DESC , a.pos " . $limit;

И заменить на:

753
$cat_name_sql = "SELECT CONCAT(a.title, _utf8'" . $lang_list_albums['from_category'] . "<i>', c.name, '</i>') AS cat_name FROM " . $CONFIG['TABLE_ALBUMS'] . " AS a LEFT JOIN " . $CONFIG['TABLE_CATEGORIES'] . " AS c ON a.category=c.cid WHERE a.owner=" . $USER_DATA['user_id'] . " ORDER BY a.category DESC , a.pos " . $limit;

Либо, более корректный вариант:
в файле include/functions.inc.php

169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
function cpg_db_connect()
{
    global $CONFIG;
 
    $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
 
    if (!$result) {
        return false;
    }
 
    if (!mysql_select_db($CONFIG['dbname'])) {
        return false;
    }
 
    return $result;
}

Заменить на:

169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
function cpg_db_connect()
{
    global $CONFIG;
 
    $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
 
    if (!$result) {
        return false;
    }
 
    mysql_query("SET NAMES utf8", $result);
 
    if (!mysql_select_db($CONFIG['dbname'])) {
        return false;
    }
 
    return $result;
}

Вы можете отслеживать комментарии к этой записи с помощью RSS 2.0. Вы можете оставить комментарий, или использовать trackback с вашего сайта.

Добавить комментарий

XHTML: Можно использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>