데이터베이스가 일관성이 없는지 테스트 할 수 있습니까?


18

우리는 Drupal이 데이터베이스에서 외래 키 의 개념을 실제로 지원하지 않으며 , 절대로 1을 하지 않을 것임을 알고 있습니다.

우리는 또한 모듈이 옳은 일을하지 않거나 사용자가 주기적으로 다음과 같은 미쳤던 일을한다는 것을 알고 있습니다

DELETE FROM node_revision
WHERE vid = 123

"데이터베이스를 깔끔하게 유지"하려는 노력으로 이 경우 후크가 실행되지 않고 데이터베이스에 고아 데이터가 있습니다. 대부분이 데이터는 무해하지만 때로는 이상한 행동을 일으키고 코드에 버그가 발생할 수 있습니다.

데이터베이스에 죽은 데이터 및 / 또는 일치하지 않는 데이터가 있는지 여부를 감지하는 적절한 방법이 있습니까?

1 Drupal 7 Schema API 는 문서화를 지원 하지만 시행하지는 않습니다.


나는 당신이 "Drupal 내에서 괜찮은 방법"을 의미한다고 가정합니까? 아니면 외부 도구에 열려 있습니까?
— iconoclast

이상적으로 Drupal 내에서는 모든 것이 열려 있습니다. Drupal 도구를 계획하기 시작했지만 얼마나 멀리 갈지 모르겠습니다.
— mpdonadio

이러한 데이터를 찾기 위해 SQL 쿼리 세트로 문제점을 줄일 수 있습니까? 멋진 Drupal UI로 사용하기 쉬운 도구를 작성하지 않고 수동으로 쿼리를 발행하는 MySQL 클라이언트에 앉아 있다면 어떻게 이러한 불일치를 찾을 수 있습니까?
— iconoclast

쿼리는 실제로 문제가되지 않습니다. 쿼리 할 테이블과 조인 할 키를 더 잘 알고 있습니다. 필자의 논문 아이디어는 Schema API를 사용하여 모든 테이블을 가져온 다음 쿼리를 작성할 수 있는지 여부를 각 스키마에서 파악하는 것입니다. 이것은 결국 휴가 프로젝트 일 수 있습니다.
— mpdonadio

Btw, 마지막으로 D8에서 일부 FK 지원 : drupal.org/node/911352
— Nic

답변:


2

샌드 박스 프로젝트에 대한 설명을 작성하면서이 작업을 수행하기 위해 샌드 박스 프로젝트를 실행했습니다.

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

현재 Drupal 6에서만 작동하며 2011 년 11 월 이후 커밋이 없었지만 유망한 것으로 보입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.