Silinmiş bir alanı kurtarma


11

Her biri bir terim başvurusu olan 4 alan içeren bir içerik türü var. Her biri 4 terim referansı atanmış 100 düğüm vardır. Bu alanlardan birini yanlışlıkla admin> yapı> içerik türleri> içerik türümden sildim ... 100 düğümün tümü bu kayıp alanın içerdiği terim referansını kaybetmesine neden oldu.

Veritabanı Yönetici modülünü kurduktan sonra, silinen alanımın veritabanının hala mevcut olduğunu görebiliyordum, "field_deleted_field_74" gibi bir isimle yeniden adlandırılmıştı

  1. Mysql kullanarak bu veritabanını yeniden "field_data_field_originalname" olarak değiştirebildim - yani silinen alan için orijinal makine adını kullanarak
  2. Ayrıca bu veritabanı içindeki silinen sütunun değerini '1'den' 0'a değiştirebildim.

Yukarıda "field_revision_field_74" gibi bir şey olarak adlandırılan buldum diğer 'hayalet' veritabanı ile yaptım ...

Şimdi sorunum, yeniden adlandırılan alanımın içerik türü yönetim alanları ekranımda veya yönetici> raporlar> alanlar listesinde önceden var olan bir alan olarak görünmemesi. 'Drush field-info fields' komutunu çalıştırdığımda da eksik.

Nasıl geri getirebilirim? Düzenlemem gerektiğini ifade eden başka bir veritabanı olduğunu varsayalım.

Teşekkürler!


Alanları silmeden önce tüm veritabanının yedeği var mı?
Ollie

Ne yazık ki değil. Ancak sorunu çözdüm.
Iain Maitland

Yanıtlar:


14

İyi bir soru ve şaşırtıcı bir şekilde, veriler hala mevcut olduğundan, silinen bir alanı geri almanın daha kolay bir yolu yoktur.

Var olduğunu varsayarsak:

  1. Field_deleted_ * tablolarını field_data_field_myfield ve field_revision_field_myfield olarak yeniden adlandırdı (ikincisi de önemlidir)
  2. İlgili veri tablolarında 'silinmiş' bayrağı 1'den 0'a güncellendi.

Ayrıca birde şu var

  • field_config

Ana alan yapılandırması

  • field_config_instance

Belirli bir varlık paketindeki alan yapılandırması.

Burada 'silinmiş' bayrağını da ayarlamanız gerekebilir:

Örneğin:

UPDATE field_config SET deleted = 0 where field_name = 'field_my_deleted_field';
UPDATE field_config_instance SET deleted = 0 where field_name = 'field_my_deleted_field';
TRUNCATE TABLE cache_field;

2
Hızlı yanıt için teşekkürler. Hem field_config hem de field_config_instance veritabanlarını düzenlemek işe yaradı.
Iain Maitland
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.