Bisakah database diuji untuk melihat apakah tidak konsisten?

18

Kita semua tahu bahwa Drupal tidak benar-benar mendukung konsep kunci asing dalam database, dan kemungkinan tidak akan pernah 1 .

Kita juga tahu bahwa ada kemungkinan modul tidak melakukan hal yang benar, atau bahwa pengguna secara berkala akan melakukan hal-hal gila seperti itu

DELETE FROM node_revision
WHERE vid = 123

dalam upaya untuk "menjaga database tetap rapi". Ketika ini terjadi, kait tidak berjalan, dan ada data yatim di database. Sebagian besar, data ini tidak berbahaya, tetapi kadang-kadang menyebabkan perilaku yang sangat aneh dan dapat mengeluarkan bug dalam kode.

Apakah ada metode yang layak untuk mendeteksi apakah Anda memiliki data yang mati dan / atau tidak konsisten dalam database Anda?

1 Skema API Drupal 7 mendukung mereka untuk dokumentasi , tetapi tidak untuk penegakan.

mpdonadio
sumber
Saya menganggap maksud Anda "ada metode yang layak dari dalam Drupal"? Atau apakah Anda terbuka untuk alat luar?
iconoclast
Idealnya, di dalam Drupal, tapi saya terbuka untuk apa pun. Saya mulai merencanakan alat Drupal, tetapi tidak tahu sejauh mana akan berjalan.
mpdonadio
Bisakah masalah dikurangi menjadi satu set query SQL untuk menemukan data seperti itu? Jika Anda tidak membuat alat yang mudah digunakan dengan UI Drupal yang bagus, tetapi sebaliknya duduk di klien MySQL yang mengeluarkan pertanyaan secara manual, bagaimana Anda menemukan ketidakkonsistenan seperti itu?
iconoclast
Pertanyaannya sebenarnya bukan masalah. Ini lebih mengetahui tabel apa yang harus ditanyakan dan kunci apa yang harus diikuti. Gagasan makalah saya adalah menggunakan Skema API untuk mendapatkan semua tabel, dan kemudian mencoba mencari tahu dari setiap skema apakah kita dapat membuat kueri. Ini mungkin menjadi proyek liburan bagi saya.
mpdonadio
Btw, tampak seperti akhirnya beberapa dukungan FK di D8: drupal.org/node/911352
Nic

Jawaban:

2

Ketika saya sedang menulis deskripsi untuk proyek kotak pasir, saya berlari melintasi proyek kotak pasir untuk melakukan ini:

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

Saat ini hanya berfungsi untuk Drupal 6, dan belum ada komitmen sejak November 2011, tetapi terlihat menjanjikan.

mpdonadio
sumber