Jump to content

Расширенная диагностика ошибок SQL


tasker
 Share

Recommended Posts

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

 

Бывают ситуации, когда форум выводит сообщение об ошибке в работе с базой данных, но при этом в логе ошибок SQL ничего не появляется. Как можно включить некую расширенную диагностику таких ошибок? Видел скриншоты, где на странице с ошибкой ниже даже отображается запрос SQL, вызвавший ошибку. Как такое включить?

 

Спасибо!

Link to comment
Share on other sites

Обратите внимание

"Board url", указанный вами в профиле, некорректен, либо недоступен на данный момент. Пожауйста, заполните его, потому что он скорее всего потребуется при диагностике вашей проблемы.

Link to comment
Share on other sites

Отключить логирования запросов, тогда ошибки будут сыпаться в бразузере. Для этого надо включить режим разработчика (константа IN_DEV в conf_global.php). Но так как в этом режиме обычно могут быть траблы в публичной части форума, проще всего открыть \ips_kernel\classDb.php и

 

выше: if ( $this->return_die == true )

добавить: $this->obj['use_error_log'] = 0;

 

Но лучше все же чтобы логи записывались, и на продакшене такое не делать.

  • Upvote 1
Link to comment
Share on other sites

Попробую, спасибо. В initdata.php видел несколько настроек по части дебага sql, думал, там можно что-то ещё включить.

Link to comment
Share on other sites

IPS_SQL_DEBUG_MODE - показывает все запросы на странице, любая страница с параметром &debug=1.

IPS_SQL_DEBUG_LOG - логирует все запросы в файле.

  • Upvote 1
Link to comment
Share on other sites

Нет, он делает лог абсолютно всех запросов которые участвуют при генерации страницы. Полезно когда нужно изучить какие запросы, за сколько и где они выполняются.

Link to comment
Share on other sites

Для этого надо включить режим разработчика

... или в \admin\sources\base\ipsRegistry.php

 

найти: IN_DEV ? 0 : 1;

заменить на: ( IN_DEV OR ipsRegistry::$settings['sql_debug'] ) ? 0 : 1;

 

Все равно $INFO['sql_debug'] не несет никакой пользы, эта переменная по моему тянется еще со времен старых версий, а сейчас она нигде не используется. Можно ее заюзать для показа в браузере.

Link to comment
Share on other sites

@siv1987, $settings['sql_debug'] всё же используется в interface\board\index.php

 

//--------------------------------
// Set debug mode
//--------------------------------

$registry->DB()->setDebugMode( ipsRegistry::$settings['sql_debug'] == 1 ? intval($_GET['debug']) : 0 );

 

А что уж делает метод setDebugMode надо смотреть.

Link to comment
Share on other sites

Регистр как переменная и установка параметров бд вне класса регистра - говорит что вряд-ли это скрипт, который участвует непосредственно при генерации страниц форума.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...