Когда я включаю общий журнал запросов 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