Максим Кузнецов
20 окт. 2014 г., 4:13

Ошибка в логе

В блоге Песочница

Здравствуйте.
На сайте есть простой код посчета количества пользователей в определенных группах с разделением по полу:
$c = $modx->newQuery('modUser'); $c->innerJoin('modUserProfile', 'p', 'modUser.id = p.internalKey'); $c->innerJoin ('modUserGroupMember','m', 'modUser.id = m.member'); $c->where(array('m.user_group:IN' => array(1,3,4))); $totalCount = $modx->getCount('modUser', $c); $c->where(array('p.gender' => 2)); $girlsCount = $modx->getCount('modUser', $c); $boysCount = $totalCount - $girlsCount;

— код корректно работает, выводит результат, но в логах периодически выскакивает ошибка:
[2014-10-16 08:45:09] (ERROR @ /index.php) Error 42S22 executing statement: Array ( [0] => 42S22 [1] => 1054 [2] => Unknown column 'm.user_group' in 'field list' )
Подскажите, пожалуйста, с чем связанна данная проблема? Заранее спасибо.
Есть подозрение, что ошибка генерируется где-то в другом месте. То есть у вас возможно подобный код есть где-то еще. У вас код корректный если бы в нем возникала эта ошибка, он бы ничего уже не считал, ибо SQL-ошибка распространяется на весь запрос.
Нигде больше переменная m.user_group не используется (дополнительно проверил поиском по всем файлам и бд), а сама ошибка проскакивает периодически - систематичными действиями принудительно выловить ее не удалось.
Тогда даже не знаю что может быть. Просто даже гадать не буду, хоть и интересно в чем же причина. Синтаксис ОК.
Попробуйте так сделать: Перед вызовом пропишите $modx->setLogLevel(0);, а после $modx->setLogLevel(1); Так вы закроете логирование ошибок именно в этом месте. Важно, чтобы после этого $modx->setLogLevel(1) было, чтобы дальнейшие ошибки логировались. И понадлюдайте недельку. Если ошибки в логах пропадут, значит точно в этом месте проблема, но это уже на стороне мускула однозначно. Может таблица лочится или типа того.
Попробую, спасибо большое..)

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