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.


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:


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.