2010-07-14 74 views
74

Estoy intentando rastrear un error que borra filas en una tabla mysql.¿Hay alguna manera de ver las consultas pasadas de mysql con phpmyadmin?

Por mi vida no puedo rastrearlo en mi código PHP, así que me gustaría retroceder encontrando la consulta mysql real que está eliminando las filas.

Ingresé a phpmyadmin, pero no puedo encontrar una manera de ver el historial de las operaciones sql anteriores.

¿Hay alguna manera de verlos en phpmyadmin?

+1

¿No puedes buscar en tu código las instrucciones 'DELETE' y depurar de esa manera? – webbiedave

+0

Escucha baol y webbiedave. Debería habilitar el registro de consultas para ver qué ocurre, pero aún debe encontrar de dónde provienen las sentencias SQL en su código. Comience a grepping para "eliminar", no puede haber * que * muchas instrucciones de eliminación en su proyecto. – joeynelson

+0

Sí, de hecho comencé por grepping para eliminar, pero mis ojos deben ser pasados ​​por alto b/c ninguno de los borrados parece problemático ... que es por lo que espero que el registro de consultas ayude. gracias a ambos por su ayuda. – chris1979

Respuesta

7

No creo que phpmyadmin te permita hacer eso, pero me gustaría escuchar que estoy equivocado.

En el otro extremo se puede habilitar el registro de consultas en MySQL http://dev.mysql.com/doc/refman/5.0/en/query-log.html

+0

gracias, acaba de habilitar el query-logging ... debería ayudar. – chris1979

+0

gracias Northpole :) – baol

+0

(Espero que la respuesta fuera correcta en 2010 :)) – baol

2

puedo estar equivocado, pero creo que he visto una lista de consultas SQL anteriores en el archivo de sesión para sesiones phpmyadmin

+0

gracias, voy a mirar a través del archivo de la sesión ahora ... – chris1979

+0

Disculpas ... He leído mal su pregunta: la lista en sesión es la lista de declaraciones anteriores emitidas a través de phpmyadmin, por lo que no contiene ninguna declaración SQL emitida por sus propios scripts PHP, por lo que probablemente no sea tan útil. –

103

Ok , así que en realidad tropecé con la respuesta.

phpMyAdmin ofrece una breve historia. Si hace clic en el ícono 'sql' justo debajo del logo 'phpMyAdmin', se abrirá una nueva ventana. En la nueva ventana, solo haga clic en la pestaña 'historial'.

Eso le dará las últimas veinte operaciones de SQL.

enter image description here

+1

Puede configurar phpMyadmin para guardar más. Tengo la configuración de la mía para guardar las últimas 100000 consultas. – Mixologic

+0

PERO ... cada vez que actualiza (p. Ej .: carga una versión anterior) su base de datos pierde su historial (por lo que no puede volver a instalar una base de datos para verificar el historial) – JinSnow

+0

No registra los cambios de índice, y lo haría ser exactamente útil para esa cosa, ya que no los registra correctamente cuando los ejecuta tampoco ... –

3

Estoy usando phpmyadmin Versión del servidor: 5.1.41.

Ofrece la posibilidad de ver la historia de sql a través de phpmyadmin.pma_history tabla. Puede buscar su consulta en esta tabla.

mesa pma_history tiene debajo de la estructura enter image description here

3

Tiene que hacer clic en la ventana de consulta justo debajo del logotipo de phpMyAdmin, una nueva ventana se abrirá. Simplemente haga clic en la pestaña Historial de SQL. Allí puede ver el historial de consultas SQL.

22

Hay una pestañaconsola en la parte inferior de la pantalla SQL (consulta). Por defecto, no está expandido, pero una vez que se hace clic en él, debe mostrar las pestañas para Opciones, Historial y Borrar. Haga clic en el historial.

El Consulta longitud historia se fija desde el interior de Página ajustes relacionados el que encontrar haciendo clic en la rueda dentada en la parte superior derecha de la pantalla.

Esto es correcto para PHP versión 4.5.1-1

+2

La longitud está ahora debajo de ** Inicio | Configuración | Consultas SQL | Longitud del historial de consultas **. Y enloquecedor "¡El valor debe ser igual o inferior a 25!" –

3

Para ver las consultas anteriores simplemente ejecute esta consulta en phpMyAdmin.

SELECT * FROM `general_log` 

si no está habilitado, ejecute las siguientes dos consultas antes de ejecutarlo.

SET GLOBAL log_output = 'TABLE'; 
SET GLOBAL general_log = 'ON'; 
+1

gracias muy útiles. Para cualquier otra persona, SELECT * FROM 'general_log' debe ser consultado dentro de la tabla mysql, de lo contrario debe incluir tablename: SELECT * FROM mysql'general_log' –

1

OK, así que sé que soy un poco tarde y algunas de las respuestas anteriores son excelentes.

Como poco más, sin embargo, mientras que en cualquier página de phpMyAdmin:

  1. clic en SQL pestaña
  2. Haga clic en 'Obtener consulta guardada auto'

este entonces mostrará su última consulta introducida.

Cuestiones relacionadas