Большие запросы к базе данных

Здравствуйте!

У меня возникла следующая проблема. Надеюсь, вы сможете мне подсказать, хотя бы в какую сторону копать.

Дано: Мастерхост, WP 2.8.4, довольно тяжелый сайт.
Проблема: в error-логе хостинга стали появляться странные записи о невозможности выполнить большие запросы типа таких (вроде все между собой примерно похожи):

[Mon Sep 7 02:10:55 2009] [error] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR (u.user' at line 1 for query SELECT DISTINCT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts LEFT JOIN wp_term_relationships AS trel ON (wp_posts.ID = trel.object_id) LEFT JOIN wp_term_taxonomy AS ttax ON ( ( ttax.taxonomy = 'category' OR ttax.taxonomy = 'post_tag' ) AND trel.term_taxonomy_id = ttax.term_taxonomy_id) LEFT JOIN wp_terms AS tter ON (ttax.term_id = tter.term_id) LEFT JOIN wp_comments AS cmt ON ( cmt.comment_post_ID = ID ) LEFT JOIN wp_postmeta AS m ON (wp_posts.ID = m.post_id) LEFT JOIN wp_users AS u ON (wp_posts.post_author = u.ID) WHERE 1=1 AND ( wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR (u.user_nicename LIKE '%reddit%') OR wp_posts.post_status = 'attachment' OR wp_posts.post_status = 'draft' OR ((tter.name LIKE '%reddit%')) OR ((tter.slug LIKE '%reddit%')) OR ((ttax.description LIKE '%reddit%')) OR ((m.meta_value LIKE '%reddit%')) OR ((wp_posts.post_excerpt LIKE '%reddit%')) OR ((((cmt.comment_content LIKE '%reddit%')) OR ((cmt.comment_author LIKE '%reddit%'))) AND cmt.comment_approved = '1') )ND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR (u.user_nicename LIKE '%reddit%') OR wp_posts.post_status = 'attachment' OR wp_posts.post_status = 'draft')) AND post_type != 'revision' ORDER BY wp_posts.post_date DESC LIMIT 0, 5 made by require, require_once, include, include, dynamic_sidebar, call_user_func_array, WP_Widget->display_callback, WP_Widget_Recent_Posts->widget, WP_Query->WP_Query, WP_Query->query, WP_Query->get_posts
[Mon Sep 7 02:13:13 2009] [error] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR (u.user' at line 1 for query SELECT DISTINCT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts LEFT JOIN wp_term_relationships AS trel ON (wp_posts.ID = trel.object_id) LEFT JOIN wp_term_taxonomy AS ttax ON ( ( ttax.taxonomy = 'category' OR ttax.taxonomy = 'post_tag' ) AND trel.term_taxonomy_id = ttax.term_taxonomy_id) LEFT JOIN wp_terms AS tter ON (ttax.term_id = tter.term_id) LEFT JOIN wp_comments AS cmt ON ( cmt.comment_post_ID = ID ) LEFT JOIN wp_postmeta AS m ON (wp_posts.ID = m.post_id) LEFT JOIN wp_users AS u ON (wp_posts.post_author = u.ID) WHERE 1=1 AND ( wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR (u.user_nicename LIKE '%snickers%') OR wp_posts.post_status = 'attachment' OR wp_posts.post_status = 'draft' OR ((tter.name LIKE '%snickers%')) OR ((tter.slug LIKE '%snickers%')) OR ((ttax.description LIKE '%snickers%')) OR ((m.meta_value LIKE '%snickers%')) OR ((wp_posts.post_excerpt LIKE '%snickers%')) OR ((((cmt.comment_content LIKE '%snickers%')) OR ((cmt.comment_author LIKE '%snickers%'))) AND cmt.comment_approved = '1') )ND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR (u.user_nicename LIKE '%snickers%') OR wp_posts.post_status = 'attachment' OR wp_posts.post_status = 'draft')) AND post_type != 'revision' ORDER BY wp_posts.post_date DESC LIMIT 0, 5 made by require, require_once, include, include, dynamic_sidebar, call_user_func_array, WP_Widget->display_callback, WP_Widget_Recent_Posts->widget, WP_Query->WP_Query, WP_Query->query, WP_Query->get_posts

В сутки таких ошибок возникает несколько. Время бывает разное – утро, ночь, день…

Как узнать что это такое? И как с этим бороться?

Заранее спасибо!

Размер не имеет значения. Тут имеет место синтаксическая ошибка: … )ND wp_posts.post_type… Возможно, поврежден какой-то файл движка или плагина. Ошибку, похоже, провоцирует виджет Recent Posts, но это не значит, что виноват именно его код.

Опубликовал и сам уже заметил – похоже, что это – запрос поиска по базе от плагина Search Everything. Как-то, смотря лог на хостинге – не допонял, а вот на форуме опубликовал и сразу заметил.

Там кусок LIKE ‘%snickers%’ показывает что искали. Если русскоязычный запрос – шестнадцатеричные кракозяблы (поэтому сразу и не догнал).

В настройках плагина было много-много разрешающих поиск менюшек по всему на свете. Я по дурости выставил все. Оказалось, что даже один дополнительные разрешающий пункт вызывает ошибку (сейчас проверил). Пришлось убрать все эти нестандартные метода поиска.

Извиняюсь за лишнее беспокойство. 🙂

Проблема в том, что от AND осталось только ND. А может там и больше пропало. Как в пошлом анекдоте про "Привет друзьям из Севастополя" 🙂

Возможно, что в версии плагина баг? Я его на все свои сайты заливал – и везде такая ошибка вылазит. Search Everything 6.3.1. 🙁

Запросто. Он селекты уродует как бог черепаху. Отключите плагин и посмотрите логи – что может быть проще?

Да я просто убрал все эти дополнительные возможности поиска, попробовал по-разному поиск, вроде не вылазят ошибки. 🙂

Anonymous
Отправить
Ответ на: