2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Где искать ошибку в MySQL?
Сообщение22.05.2020, 12:16 
Аватара пользователя


19/02/13
1628
Приветствую!
Есть сайт кузовного автосервиса mskautopaint.ru. Сайт создавался весьма давно, сейчас работает на Joomla! 2.5 - насколько я понял, система устаревшая. На главной странице выдаётся сообщение об ошибке MySQL типа "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 ') ORDER BY c.lft, a.title, a.created DESC LIMIT ....." с длинным текстом запроса. Остальные страницы сайта эту ошибку не выдают.

Насколько я понимаю, где-то в каком-нибудь компоненте сайт использует устаревший синтаксис, на хостинге MySQL обновился и ругается на него. Меня смущает, что в сообщении об ошибке нет указания на содержащий ошибку файл и на номер строки, например. Просто "У вас ошибка синтаксиса около..." и всё.

Подскажите, где в таком случае искать текст проблемного запроса, чтобы исправить синтаксис? Где вообще хранятся тексты запросов? Куда копать?
Спасибо!

-- 22.05.2020, 12:35 --

Это же сообщение об ошибке выдаётся и при просмотре структуры шаблона через админку сайта. Висит себе по центру, окружённое разными позициями. И никак не выдаёт себе, не рассказывает, каким компонентом оно вызвано, к какой позиции привязано...

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 13:31 
Аватара пользователя


19/02/13
1628
В тексте сообщения присутствует "SQL=SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.language, a.checked_out, a.checked_out_time, a.catid, a.created, a.created_by, a.created_by_alias,". Полагаю, ошибка возникает где-то при определении пользователя, зашедшего на сайт. Хотя там никаких пользователей и нет - по сути это сайт-визитка на пяток страниц. Ни форума, ни блога, ничего в этом роде.

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 13:54 


07/08/14
02/06/20
3439
Ошибка синтаксиса это, например
SELECT поле1, поле2, FROM tab (запятая перед FROM).

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 14:04 
Аватара пользователя


19/02/13
1628
Я понимаю это и готов погрузиться в тексты запросов в поисках ошибки, но не могу найти сами тексты. В сообщении об ошибке править что-то толку нет, нужен исходник. А где его найти - вот вопрос. Сейчас буду перебирать .php файлы, может где найду что-нибудь похожее. Из текста ошибки узнал имена таблиц БД, к которым обращается запрос, узнал имена полей - буду копать...

В сообщении об ошибке с запятыми вообще полный бардак. Где-то за ними идут пробелы, где-то нет, запятые перед CASE WHEN и ROUND идут без пробелов, перед LENGHT с пробелами, перед остальными операторами запятых вообще нет...

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 14:17 
Заслуженный участник


06/07/11
5576
кран.набрать.грамота
Vladimir-80 в сообщении #1464525 писал(а):
Подскажите, где в таком случае искать текст проблемного запроса, чтобы исправить синтаксис? Где вообще хранятся тексты запросов? Куда копать?
Вы владелец сайта? Если нет, то не получится никуда копать, вас туда не пустят.
Если да - то нигде не хранится, как правило. Генерируется на лету. Части запроса могут храниться в коде в виде кусков строк. Если используется ORM, то запрос собирается по кусочкам из метаданных, там вообще без поллитра не разберешься.

Конкретно в вашем случае, ошибка, скорее всего, тут:
Код:
AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2020-05-22 11:10:46') AND a.catid IN ()    <-- вот она!
ORDER BY c.lft, a.title, a.created DESC

catid - это, похоже, какая-то "категория". Динамически генерируется список айдишников этих категорий, и запихивается в условие. Что-то сломалось, список категорий формируется пустой, и дальше все ломается. Проверки списка на пустоту, видимо, тоже нет. А может, это она и сломалась.
Найдите форум по этой CMS, спросите там.

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 14:29 
Аватара пользователя


19/02/13
1628
rockclimber в сообщении #1464549 писал(а):
Вы владелец сайта? Если нет, то не получится никуда копать, вас туда не пустят.


У меня есть все пароли - и от админки, и от хостинга. То есть технически я могу сделать всё, что понадобится.

rockclimber в сообщении #1464549 писал(а):
нигде не хранится, как правило. Генерируется на лету


Этого я и боюсь. Однако всё равно поробую разобраться.

rockclimber в сообщении #1464549 писал(а):
Найдите форум по этой CMS, спросите там.


Спасибо, сделаю.

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 15:59 
Аватара пользователя


19/02/13
1628
Пообщался с техподдержкой провайдера. Выяснил, что ошибку выдаёт плагин JA T3 Framework. Это одна из основ шаблона, при его отключении сайт не работает - но уже какая-то ясность появляется, направление поиска вырисовывается. Продолжаю копать.

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 22:15 
Аватара пользователя


19/02/13
1628
А есть ли способ отключить вывод сообщения об ошибке посетителям сайта? Пусть он там себе молча не находит какую-нибудь категорию и молча не показывает какие-нибудь новости - и ладненько, и чудненько, меня это на первых порах вполне устроит. Всё, что нужно, он сейчас отображает и делает. Главное, чтобы он не кричал о своих проблемах каждому посетителю красной кляксой посреди главной страницы, чтобы не портил картинку. Пусть в логи пишет. А я уж дальше вникну, неторопясь найду, где что не так, и исправлю.
Если подскажете, где какой конфиг подправить для этого, или там галочку хитрую в настройках - буду весьма благодарен, после чего погружусь в мануалы, чтобы не тревожить больше людей глупыми вопросами :D

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение22.05.2020, 23:24 


21/05/16
3045
Аделаида
Легко - не пользоваться огромными вебдвижками для
Vladimir-80 в сообщении #1464539 писал(а):
сайт-визитка на пяток страниц
.

 Профиль  
                  
 
 Re: Где искать ошибку в MySQL?
Сообщение23.05.2020, 00:03 
Аватара пользователя


19/02/13
1628
kotenok gav в сообщении #1464633 писал(а):
Легко - не пользоваться огромными вебдвижками

Не я этот сайт создавал - работаю с тем, что досталось.
Однако же я его победил! Если вкратце - была ошибка в описании категории пункта главного меню. По ссылке на joomla-форум можно прочитать подробности.
Форумы - сила!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Модераторы: Toucan, maxal, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group