Bu, Drupal'ı yeniden yükleyerek veya ideal bir Drupal kurulumundan tabloyu kırık örneğinize kopyalayarak düzeltilebilir.
Veya aşağıdaki geçici çözümü deneyebilirsiniz (yalnızca Drupal örneğiniz zaten bozukken yapın):
Önce eski kayıt defteri tablosunu yedekleyin (her ihtimale karşı):
drush sqlq "CREATE TABLE registry_bak LIKE registry; INSERT INTO registry_bak SELECT * FROM registry;"
drush sqlq "CREATE TABLE system_bak LIKE system; INSERT INTO system_bak SELECT * FROM system;"
Bootstrap önbelleğini ve kayıt defteri tablosunu temizleyin.
drush sqlq "TRUNCATE cache_bootstrap; TRUNCATE registry"
Temel verileri kayıt defteri tablosuna ekleyin:
drush sqlq 'INSERT INTO registry (name, type, filename) VALUES ("SelectQueryExtender", "class", "includes/database/select.inc"), ("DrupalDefaultEntityController", "class", "includes/entity.inc");'
drush eval "registry_update();"
Önbellekleri temizleyin:
drush -y cc all
4. önbellek temizliği başarısız olursa, diğer bazı eksik sınıflar nedeniyle, aşağıdakilerden birini yapabilirsiniz:
a) Eksik sınıfları manuel olarak ekleyin, örneğin:
$ drush -y cc all
Fatal error: Class 'Entity' not found in profile2.module on line 593
$ grep -Rwl "^class Entity" .
./sites/all/modules/entity/includes/entity.inc
$ drush sqlq 'INSERT INTO registry (name, type, filename) VALUES ("Entity", "class", "sites/all/modules/entity/includes/entity.inc");'
$ drush -y cc all # testing...
# If Fatal error:, repeat 5a. again.
veya:
b) Başarısız olan bu katkıda bulunan modülleri (örneğin profil2, kurallar) şu şekilde devre dışı bırakmaya çalışın:
drush sqlq 'UPDATE system SET status = 0 WHERE name = "failing_module"'
4'ten başlayarak adımları tekrarlayın.
Bir şey olduğundan daha kırılmışsa, tablolarınızı orijinal adımına (1. adımda yapıldı) geri yükleyebilirsiniz:
drush sqlq "TRUNCATE registry; INSERT INTO registry SELECT * FROM registry_bak;"
drush sqlq "TRUNCATE system; INSERT INTO system SELECT * FROM system_bak;"
ve yeniden dene.
Ayrıca bkz: Kurulu modüller / sites / all / modülleri / * 'den / sites / all / katkıda / modülleri / *' ya nasıl taşınır
Yeniden oluşturma registrytablosu, Drupal webroot'ta çalıştırılan aşağıdaki komut dosyasıyla da elde edilebilir:
grep -ERo "^(\s+)?(abstract )?class (\S+)" . | tr ':' ' ' | sed "s/abstract //g" | awk '{print "INSERT INTO registry (filename, type, name) VALUES (\x27"$1"\x27,\x27"$2"\x27,\x27"$3"\x27);"}' | $(drush sql-connect) -f
Sayesinde Mike regex ile bireyin yardım.
drush rrbaşarısız olduğu yerde beni kurtardı