Ошибка при авторизации

Доброго времени суток!
При входе на сайт происходит ошибка такого рода:

SQL Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay at /home/classes/modules/topic/mapper/Topic.mapper.class.php line 460
Array ( [code] => 1104 [message] => The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay [query] => SELECT t_fast.*, tc.*, u.user_login as user_login, IF(tv.topic_id IS NULL,0,1) as user_is_vote, tv.vote_delta as user_vote_delta, IF(tqv.topic_id IS NULL,0,1) as user_question_is_vote, bu.is_moderator as user_is_blog_moderator, bu.is_administrator as user_is_blog_administrator, IF(tr.comment_count_last IS NULL,t_fast.topic_count_comment,t_fast.topic_count_comment-tr.comment_count_last) as count_comment_new, IF(ft.topic_id IS NULL,0,1) as topic_is_favourite FROM ( SELECT t.*, b.blog_title as blog_title, b.blog_type as blog_type, b.blog_url as blog_url, b.user_owner_id as blog_owner_id FROM prefix_topic as t, prefix_blog as b WHERE 1=1 AND t.topic_publish = 1 AND ( t.topic_rating >= 1 or topic_publish_index=1 ) AND b.blog_type in ('personal','open') AND t.blog_id=b.blog_id ORDER by t.topic_date_add desc LIMIT 0, 10 ) as t_fast JOIN prefix_user AS u ON t_fast.user_id=u.user_id LEFT JOIN ( SELECT topic_id, vote_delta FROM prefix_topic_vote WHERE user_voter_id = 1 ) AS tv ON t_fast.topic_id=tv.topic_id LEFT JOIN ( SELECT topic_id FROM prefix_favourite_topic WHERE user_id = 1 ) AS ft ON t_fast.topic_id=ft.topic_id LEFT JOIN ( SELECT topic_id, comment_count_last FROM prefix_topic_read WHERE user_id = 1 ) AS tr ON t_fast.topic_id=tr.topic_id LEFT JOIN ( SELECT topic_id FROM prefix_topic_question_vote WHERE user_voter_id = 1 ) AS tqv ON t_fast.topic_id=tqv.topic_id LEFT JOIN ( SELECT is_moderator, is_administrator, blog_id FROM prefix_blog_user WHERE user_id = 1 ) AS bu ON t_fast.blog_id=bu.blog_id JOIN prefix_topic_content AS tc ON t_fast.topic_id=tc.topic_id order by t_fast.topic_date_add desc; [context] => /home/classes/modules/topic/mapper/Topic.mapper.class.php line 460 )


Заметим, что эти ошибки постоянно происходят у юзеров с правами админа.

В чем проблема? Заранее спасибо.

9 комментариев

avatar
видимо в настройках хостинга(точнее БД MySQL), которые не дают делать необходимое количество джойнов
  • ort
  • 0
avatar
в маппере перед интересующим запросом поставь
SET max_join_size ...

Но это конечно не выход. Обратись к хостеру.
avatar
а какое значение MAX_JOIN_SIZE будет приемлемо для работы CMS?
avatar
Ни с того, ни с сего словил такую же ошибку.
Почему такое может быть?
avatar
Притом только на одном конкретном экаунте.
Может что то «переполнилось» и надо почистить/исправить?
avatar
Сапорт хостинга сказал, что параметр SQL_MAX_JOIN_SIZE установлен
в 2м, что весьма много. Почему такая фиговина произошла то?
avatar
Как же этот запрос сделать менее прожорливым на предмет JOIN'ов, а то ошибка никуда сама по себе не денется =(
avatar
Возникла аналогничная проблема. Кто-нибудь решил?
Хостер — Sweb
avatar
Вроде все решилось
вставил перед запросом, на котором спотыкается:
$sql = "SET SQL_BIG_SELECTS=1;";
$this->oDb->query($sql);
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.