Um banco de dados pode ser testado para verificar se é inconsistente?


18

Todos nós sabemos que o Drupal realmente não suporta o conceito de chaves estrangeiras no banco de dados e provavelmente nunca 1 .

Também sabemos que é possível que os módulos não façam a coisa certa ou que os usuários periodicamente fazem coisas loucas como

DELETE FROM node_revision
WHERE vid = 123

em um esforço para "manter o banco de dados arrumado". Quando isso acontece, os ganchos não são executados e há dados órfãos no banco de dados. Principalmente, esses dados são inofensivos, mas ocasionalmente causam comportamentos realmente estranhos e podem trazer bugs no código.

Existem métodos decentes para detectar se você possui dados mortos e / ou inconsistentes no seu banco de dados?

1 A API do Drupal 7 Schema oferece suporte para documentação , mas não aplicação.


Suponho que você queira dizer "algum método decente do Drupal"? Ou você está aberto a uma ferramenta externa?
Iconoclast

Idealmente, dentro do Drupal, mas estou aberto a qualquer coisa. Comecei o trabalho de planejamento de uma ferramenta Drupal, mas não sei até onde ela vai.
mpdonadio

O problema pode ser reduzido a um conjunto de consultas SQL para encontrar esses dados? Se você não estivesse construindo nenhuma ferramenta fácil de usar com uma interface de usuário agradável do Drupal, mas sentado em um cliente MySQL emitindo consultas manualmente, como você encontraria essas inconsistências?
Iconoclast

As consultas não são realmente o problema. É mais fácil saber em quais tabelas consultar e em quais chaves participar. Minha idéia principal é usar a API do esquema para obter todas as tabelas e, em seguida, tentar descobrir em cada esquema se podemos criar uma consulta. Isso pode acabar sendo um projeto de férias para mim.
mpdonadio

Btw, parecendo finalmente algum suporte ao FK no D8: drupal.org/node/911352 #
Nic

Respostas:


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.