Как зарегистрировать ошибочные запросы в mysql?

Мы используем далласские датчики на последовательном порте и Плагине Perl-munin для контроля температур. Очень недорогой и самодельный, но работы как очарование.

0
задан 20 April 2010 в 10:28
2 ответа

Короче говоря, нет никакого легкого ответа.
Но если у Вас нет никакого другого выбора затем для входа ошибок в сервер скорее затем в клиентском приложении, [Luke] можно использовать источник.
Я даю направления, скорее затем исправляют, и это может применяться по-другому к Вашей mysqld версии. В mysql исходном dir, в файле sql/sql_parce.cc, в функции
void mysql_parse(THD *thd, const char *inBuf, uint length, const char ** found_semicolon)
после оператора bool err= parse_sql(thd, & parser_state, NULL);
в else пункт к следующему if(!err) оператор, который похож

      else
        {
          DBUG_ASSERT(thd->is_error());
          DBUG_PRINT("info",("Command aborted. Fatal_error: %d",
                             thd->is_fatal_error));

          query_cache_abort(&thd->net);
        }

вставьте строку как DBUG_PRINT("info",("query was: %s",inBuf));
таким образом, это должно быть похожим

      else
        {
          DBUG_ASSERT(thd->is_error());
          DBUG_PRINT("info",("Command aborted. Fatal_error: %d",
                             thd->is_fatal_error));
          DBUG_PRINT("info",("Query was: %s",inBuf));
          query_cache_abort(&thd->net);
        }


Затем работайте./настраивать с флагом - с отладкой (среди других, которых Вы используете), сборка, и выполните команду mysqld с флагами, как обычно, но добавьте отладку флага-#d, info:f, mysql_parse, ну, в общем, точно так же, как это:

sudo -u mysql /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 -#d,info:f,mysql_parse


затем, то, что Вы вошли в вывод, похоже на это:

100605  3:05:55  InnoDB: Started; log sequence number 2 2219911338
100605  3:05:56 [Note] Event Scheduler: Loaded 0 events
100605  3:05:56 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.37-1ubuntu5.1-debug-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
mysql_parse: info: Command aborted. Fatal_error: 0
mysql_parse: info: query was: aldjflsajlfjslfjlsfkjlsdjflsjfljsdlkfjsdf

Кроме того, можно найти полезным эти ссылки:

http://dev.mysql.com/doc/refman/5.0/en/making-trace-files.html
http://dev.mysql.com/doc/refman/5.0/en/the-dbug-package.html


Надежда, которая помогает.

1
ответ дан 4 December 2019 в 23:06

Не возможный AFAIK. Вы могли взломать что-то вместе использование MySQL Proxy или tcpdump/tshark.

0
ответ дан 4 December 2019 в 23:06
  • 1
    What' s цель fo журнал, если это не может обнаружить ошибки?... –  Van Nguyen 21 April 2010 в 03:17

Теги

Похожие вопросы