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.