Czy można przetestować bazę danych, aby sprawdzić, czy jest niespójna?

18

Wszyscy wiemy, że Drupal tak naprawdę nie obsługuje koncepcji kluczy obcych w bazie danych i prawdopodobnie nigdy nie będzie 1 .

Wiemy również, że moduły mogą nie postępować właściwie lub użytkownicy okresowo robią takie szalone rzeczy

DELETE FROM node_revision
WHERE vid = 123

w celu „utrzymania porządku w bazie danych”. Kiedy tak się dzieje, haki nie działają, a baza danych zawiera osierocone dane. Przeważnie te dane są nieszkodliwe, ale czasami powodują naprawdę dziwne zachowanie i mogą powodować błędy w kodzie.

Czy istnieją jakieś przyzwoite metody wykrywania, czy masz martwe i / lub niespójne dane w bazie danych?

1 Interfejs API schematu Drupal 7 obsługuje je w zakresie dokumentacji , ale nie wymuszania.

mpdonadio
źródło
Zakładam, że masz na myśli „jakieś przyzwoite metody z Drupala”? A może jesteś otwarty na narzędzie zewnętrzne?
iconoclast
Idealnie w ramach Drupala, ale jestem otwarty na wszystko. Rozpocząłem papierowe planowanie narzędzia Drupal, ale nie wiem, jak daleko to zajdzie.
mpdonadio
Czy problem można sprowadzić do zestawu zapytań SQL w celu znalezienia takich danych? Jeśli nie budujesz łatwego w użyciu narzędzia z ładnym interfejsem użytkownika Drupal, ale zamiast tego siedzisz przy kliencie MySQL, który ręcznie wydaje zapytania, jak możesz znaleźć takie niespójności?
iconoclast
Zapytania tak naprawdę nie stanowią problemu. Lepiej jest wiedzieć, do których tabel należy wysłać zapytanie i jakie klucze dołączyć. Mój papierowy pomysł polega na użyciu Schema API, aby uzyskać wszystkie tabele, a następnie spróbuj ustalić z każdego schematu, czy możemy zbudować zapytanie. Może to być dla mnie projekt wakacyjny.
mpdonadio
Przy okazji, wygląda na to, że w końcu wsparcie dla FK w D8: drupal.org/node/911352
Nic

Odpowiedzi: