Может ли база данных быть проверена, чтобы увидеть, если она несовместима?

18

Мы все знаем, что Drupal на самом деле не поддерживает концепцию внешних ключей в базе данных, и, вероятно, никогда не будет 1 .

Мы также знаем, что модули могут делать неправильные вещи или что пользователи будут периодически делать сумасшедшие вещи, такие как

DELETE FROM node_revision
WHERE vid = 123

в попытке "держать базу данных в чистоте". Когда это происходит, перехватчики не запускаются, и в базе данных появляются потерянные данные. В основном, эти данные безвредны, но иногда они вызывают странное поведение и могут выявлять ошибки в коде.

Существуют ли приличные методы для определения наличия в вашей базе данных мертвых и / или противоречивых данных?

1 Drupal 7 Schema API поддерживает их для документирования , но не для принудительного применения.

mpdonadio
источник
Я предполагаю, что вы имеете в виду "какие-нибудь достойные методы изнутри Drupal"? Или вы открыты для внешнего инструмента?
иконоборчество
В идеале, в Drupal, но я открыт для всего. Я начал планировать работу с инструментом на Drupal, но не знаю, как далеко он зайдет.
mpdonadio
Можно ли свести проблему к набору SQL-запросов для поиска таких данных? Если бы вы не создавали какой-либо простой в использовании инструмент с хорошим пользовательским интерфейсом Drupal, а вместо этого сидели за клиентом MySQL, выдающим запросы вручную, как бы вы обнаружили такие несоответствия?
иконоборчество
Запросы на самом деле не проблема. Больше знаний о том, какие таблицы запрашивать и какие ключи использовать. Моя идея состоит в том, чтобы использовать API схемы для получения всех таблиц, а затем попытаться выяснить из каждой схемы, можем ли мы создать запрос. Это может в конечном итоге стать праздничным проектом для меня.
mpdonadio
Кстати, похоже, что, наконец, некоторая поддержка FK в D8: drupal.org/node/911352
Nic

Ответы:

2

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

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

В настоящее время он работает только для Drupal 6, и с ноября 2011 года коммитов не было, но выглядит многообещающе.

mpdonadio
источник