Une base de données peut-elle être testée pour voir si elle est incohérente?


18

Nous savons tous que Drupal ne prend pas vraiment en charge le concept de clés étrangères dans la base de données, et ne le fera probablement jamais 1 .

Nous savons également qu'il est possible que les modules ne fassent pas la bonne chose, ou que les utilisateurs fassent périodiquement des choses folles comme

DELETE FROM node_revision
WHERE vid = 123

dans un effort pour "garder la base de données en ordre". Dans ce cas, les hooks ne s'exécutent pas et la base de données contient des données orphelines. Généralement, ces données sont inoffensives, mais occasionnellement, elles provoquent un comportement vraiment étrange et peuvent faire ressortir des bogues dans le code.

Existe-t-il des méthodes décentes pour détecter si vous avez des données mortes et / ou incohérentes dans votre base de données?

1 L'API de schéma Drupal 7 les prend en charge pour la documentation , mais pas pour leur application.


Je suppose que vous voulez dire "toutes les méthodes décentes de Drupal"? Ou êtes-vous ouvert à un outil extérieur?
iconoclaste du

Idéalement, au sein de Drupal, mais je suis ouvert à tout. J'ai commencé à planifier la création d'un outil Drupal, mais je ne sais pas jusqu'où il ira.
mpdonadio

Le problème peut-il être réduit à un ensemble de requêtes SQL pour trouver ces données? Si vous n'étiez pas en train de construire un outil facile à utiliser avec une belle interface utilisateur Drupal, mais plutôt assis à un client MySQL émettant des requêtes manuellement, comment trouveriez-vous de telles incohérences?
iconoclaste du

Les requêtes ne sont pas vraiment le problème. Il s'agit plus de savoir sur quelles tables interroger et sur quelles clés se connecter. Mon idée de papier est d'utiliser l'API de schéma pour obtenir toutes les tables, puis d'essayer de déterminer à partir de chaque schéma si nous pouvons créer une requête. Cela peut finir par être un projet de vacances pour moi.
mpdonadio

BTW, ressemblant finalement à un soutien FK J8: drupal.org/node/911352
Nic

Réponses:


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.