Чи можна перевірити базу даних, щоб побачити, чи вона невідповідна?


18

Всі ми знаємо, що Drupal насправді не підтримує концепцію зовнішніх ключів у базі даних, і, ймовірно, ніколи не буде 1 .

Ми також знаємо, що можливо, що модулі не роблять правильно, або що користувачі періодично робитимуть божевільні речі

DELETE FROM node_revision
WHERE vid = 123

прагнучи "зберегти базу даних в порядку". Коли це відбувається, гачки не запускаються, і в базі даних є осиротілі дані. Здебільшого ці дані нешкідливі, але іноді вони викликають дійсно дивну поведінку і можуть виявити помилки в коді.

Чи є гідні методи виявлення наявності у вашій базі даних мертвих та / або непослідовних даних?

1 API схеми Drupal 7 підтримує їх для документації , але не для примусового виконання.


Я припускаю, що ви маєте на увазі "будь-які пристойні методи з Друпалу"? Або ви відкриті для зовнішнього інструменту?
іконоборство

В ідеалі - в рамках Drupal, але я відкритий до всього. Я почав документувати план друкарського інструменту, але не знаю, як далеко він піде.
mpdonadio

Чи можна звести проблему до набору запитів SQL для пошуку таких даних? Якщо ви не будували будь-якого простого у використанні інструменту з приємним інтерфейсом Drupal, а натомість сидите за клієнтом MySQL, який видає запити вручну, як би ви виявили такі невідповідності?
іконоборство

Запитання насправді не є проблемою. Це більше знати, які таблиці запитувати і до яких ключів приєднатися. Моя стаття полягає в тому, щоб скористатися API-схемою Schema, щоб отримати всі таблиці, а потім спробувати з'ясувати з кожної схеми, чи можемо ми створити запит. Це може закінчитися для мене святковим проектом.
mpdonadio

Btw, схоже, нарешті, якась підтримка FK у D8: drupal.org/node/911352
Nic

Відповіді:


2

Коли я писав опис проекту пісочниці, я натрапив на проект пісочниці для цього:

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

Наразі він працює лише для Drupal 6, і жодних зобов'язань з листопада 2011 року не було, але це виглядає перспективно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.