Назад | Перейти на главную страницу

Общий журнал запросов MySQL: показать подготовленные значения аргументов?

Когда я включаю общий журнал запросов MySQL, выполнение подготовленных операторов регистрируется следующим образом:

Execute SELECT col1, col2 FROM table1 WHERE col1 = ?

Я видел в Интернете другую информацию, которая, как мне кажется, показывает, что люди видят замененные значения для аргументов подготовленных операторов, но я не могу найти никакой информации об этом.

Мне нужно видеть значения, используемые в запросах, и я не могу сделать это на стороне клиента, потому что это скомпилированный код (хотя я пытался указать ему подключиться к порту 3306, но ngrep не показывает трафика, поэтому я полагаю, что он использует сокет, если он доступен, и я не знаю, насколько легко было бы восстановить подготовленные запросы с помощью сниффинга пакетов).

Если я установлю long_query_time = 0 покажет ли журнал медленных запросов значения, которые мне нужны? Какие еще есть возможности?

Настройка long_query_time = 0 и slow_query_log = 1, перезапуск mysql показывает запросы с фактическими значениями аргументов в журнале медленных запросов.

Я не приму этот ответ в ожидании лучшего способа получить общий журнал запросов, чтобы показать значения аргументов.

Вам нужно отслеживать запросы в dev или prod? Если только разработчик, вы можете взглянуть на Lottip. Он показывает подготовленные операторы с параметрами.

Общий журнал mysql делает именно то, что вы хотите. Ищите «выполнить», а не «подготовить»

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

Prepare SELECT `html_column_grid`.* FROM `html_column_grid` WHERE html_column_grid_html_id IN(?) ORDER BY `html_column_grid_ordering` 
Execute SELECT `html_column_grid`.* FROM `html_column_grid` WHERE html_column_grid_html_id IN('5555') ORDER BY `html_column_grid_ordering` 

Это на mysql 5.7