Un database può essere testato per vedere se è incoerente?


18

Sappiamo tutti che Drupal non supporta realmente il concetto di chiavi esterne nel database e probabilmente non lo farà mai 1 .

Sappiamo anche che è possibile che i moduli non facciano la cosa giusta, o che gli utenti facciano periodicamente cose folli come

DELETE FROM node_revision
WHERE vid = 123

nel tentativo di "mantenere in ordine il database". In questo caso, gli hook non vengono eseguiti e nel database sono presenti dati orfani. Principalmente, questi dati sono innocui, ma a volte causano comportamenti davvero strani e possono far emergere bug nel codice.

Esistono metodi decenti per rilevare se nel database sono presenti dati morti e / o incoerenti?

1 L'API Schema Drupal 7 li supporta per la documentazione , ma non per l'applicazione.


Suppongo che intendi "qualsiasi metodo decente all'interno di Drupal"? O sei aperto a uno strumento esterno?
iconoclasta,

Idealmente, all'interno di Drupal, ma sono aperto a tutto. Ho iniziato a pianificare la carta con uno strumento Drupal, ma non so fino a che punto andrà.
mpdonadio

Il problema può essere ridotto a una serie di query SQL per trovare tali dati? Se non stessi costruendo uno strumento facile da usare con una bella interfaccia utente Drupal, ma invece sedessi su un client MySQL che inviava query manualmente, come troveresti tali incongruenze?
iconoclasta,

Le domande non sono proprio il problema. È più sapere quali tabelle interrogare e su quali chiavi unire. La mia idea cartacea è quella di utilizzare l'API Schema per ottenere tutte le tabelle e quindi provare a capire da ogni schema se possiamo costruire una query. Questo potrebbe finire per essere un progetto di vacanza per me.
mpdonadio

A proposito, sembra finalmente un po 'di supporto FK in D8: drupal.org/node/911352
Nic

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.