Điều này có thể được khắc phục bằng cách cài đặt lại Drupal hoặc bằng cách sao chép bảng từ bản cài đặt Drupal mới lý tưởng vào trường hợp bị hỏng của bạn.
Hoặc bạn có thể thử cách giải quyết sau đây (chỉ thực hiện khi phiên bản Drupal của bạn đã bị hỏng):
Sao lưu bảng đăng ký cũ trước (chỉ trong trường hợp):
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;"
Xóa bộ đệm bootstrap và bảng đăng ký.
drush sqlq "TRUNCATE cache_bootstrap; TRUNCATE registry"
Chèn dữ liệu cơ bản vào bảng đăng ký:
drush sqlq 'INSERT INTO registry (name, type, filename) VALUES ("SelectQueryExtender", "class", "includes/database/select.inc"), ("DrupalDefaultEntityController", "class", "includes/entity.inc");'
drush eval "registry_update();"
Xóa bộ nhớ cache:
drush -y cc all
Nếu xóa bộ nhớ cache trong 4. không thành công, vì một số lớp bị thiếu khác, bạn có thể:
a) Thêm các lớp bị thiếu bằng tay, ví dụ:
$ 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.
hoặc là:
b) Cố gắng vô hiệu hóa các mô-đun đóng góp thất bại này (ví dụ: profile2, quy tắc) bằng cách:
drush sqlq 'UPDATE system SET status = 0 WHERE name = "failing_module"'
và lặp lại các bước bắt đầu từ 4.
Nếu một cái gì đó bị hỏng nhiều hơn nó, bạn có thể khôi phục các bảng của bạn về điểm ban đầu (được thực hiện trong 1. bước) bằng cách:
drush sqlq "TRUNCATE registry; INSERT INTO registry SELECT * FROM registry_bak;"
drush sqlq "TRUNCATE system; INSERT INTO system SELECT * FROM system_bak;"
và thử lại.
drush rr
thất bại