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.


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:


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.