¿Cómo puedo saber cuándo se actualizó por última vez una tabla MySQL?
En el pie de página de mi página, me gustaría agregar algo como "última actualización el xx/xx/200x" siendo esta fecha la última vez que se actualizó una determinada tabla MySQL.
¿Cuál es la mejor manera de hacer eso? ¿Existe una función para recuperar la última fecha actualizada? ¿Debo acceder a la base de datos cada vez que necesito este valor?
En versiones posteriores de MySQL, puede usar la information_schema
base de datos para indicarle cuándo se actualizó otra tabla:
SELECT UPDATE_TIME
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME = 'tabname'
Por supuesto, esto significa abrir una conexión a la base de datos.
Una opción alternativa sería "tocar" un archivo en particular cada vez que se actualiza la tabla MySQL:
Sobre actualizaciones de bases de datos:
- Abra su archivo de marca de tiempo en
O_RDRW
modo close
eso de nuevo
o alternativamente
- use
touch()
, el equivalente PHP de lautimes()
función, para cambiar la marca de tiempo del archivo.
Visualización en página:
- utilícelo
stat()
para volver a leer la hora de modificación del archivo.
No tengo la base de datos information_schema, usando mysql versión 4.1.16, así que en este caso puedes consultar esto:
SHOW TABLE STATUS FROM your_database LIKE 'your_table';
Devolverá estas columnas:
| Nombre | Motor | Versión | formato_fila | Filas | Longitud_fila_promedio
| Longitud_datos | Longitud_máxima_datos | Longitud_índice | Datos_libres | incremento_automático
| Crear_hora | Hora_actualización | Hora_de verificación | Cotejo
| Suma de comprobación | Crear_opciones | Comentar |
Como puede ver, hay una columna llamada: " Update_time " que muestra la última hora de actualización de your_table .
Lo más sencillo sería comprobar la marca de tiempo de los archivos de la tabla en el disco. Por ejemplo, puede consultar en su directorio de datos
cd /var/lib/mysql/<mydatabase>
ls -lhtr *.ibd
Esto debería darle la lista de todas las tablas con la tabla cuando se modificó por última vez, la más antigua, primero.