¿Se puede probar una base de datos para ver si es inconsistente?

18

Todos sabemos que Drupal realmente no admite el concepto de claves foráneas en la base de datos, y probablemente nunca lo hará 1 .

También sabemos que es posible que los módulos no hagan lo correcto, o que los usuarios periódicamente hagan locuras como

DELETE FROM node_revision
WHERE vid = 123

en un esfuerzo por "mantener la base de datos ordenada". Cuando esto sucede, los ganchos no se ejecutan y hay datos huérfanos en la base de datos. Principalmente, estos datos son inofensivos, pero ocasionalmente causan un comportamiento realmente extraño y pueden generar errores en el código.

¿Hay algún método decente para detectar si tiene datos muertos o inconsistentes en su base de datos?

1 La API de esquema de Drupal 7 los admite para la documentación , pero no para la aplicación.

mpdonadio
fuente
¿Supongo que te refieres a "algún método decente desde Drupal"? ¿O estás abierto a una herramienta externa?
iconoclasta
Idealmente, dentro de Drupal, pero estoy abierto a cualquier cosa. Empecé en papel planeando una herramienta Drupal, pero no sé qué tan lejos llegará.
mpdonadio
¿Se puede reducir el problema a un conjunto de consultas SQL para encontrar dichos datos? Si no estaba creando ninguna herramienta fácil de usar con una interfaz de usuario de Drupal agradable, sino que se sentaba en un cliente MySQL que emitía consultas manualmente, ¿cómo encontraría tales inconsistencias?
iconoclasta
Las consultas no son realmente el problema. Es más saber qué tablas consultar y qué teclas unir. Mi idea en papel es utilizar la API de esquema para obtener todas las tablas y luego tratar de averiguar a partir de cada esquema si podemos generar una consulta. Esto puede terminar siendo un proyecto de vacaciones para mí.
mpdonadio
Por cierto, parece finalmente un poco de soporte FK en D8: drupal.org/node/911352
Nic

Respuestas:

2

Mientras escribía una descripción para un proyecto de sandbox, me encontré con un proyecto de sandbox para hacer esto:

http://drupal.org/sandbox/anton_krechetov/1345066

Actualmente solo funciona para Drupal 6, y no ha habido ningún compromiso desde noviembre de 2011, pero parece prometedor.

mpdonadio
fuente