Pulihkan bidang yang dihapus


11

Saya memiliki tipe konten dengan 4 bidang yang masing-masing merupakan referensi istilah. Ada 100 node masing-masing ditugaskan 4 istilah referensi. Saya tidak sengaja menghapus salah satu bidang ini dari admin> struktur> tipe konten> tipe konten saya ... yang mengakibatkan semua 100 node kehilangan referensi istilah yang terdapat di bidang yang hilang ini.

Setelah menginstal modul Admin Database saya bisa melihat bahwa database untuk bidang yang dihapus saya masih ada, itu telah diubah namanya menjadi sesuatu seperti "field_deleted_field_74"

  1. Menggunakan mysql saya telah dapat mengubah nama database ini kembali menjadi "field_data_field_originalname" - yaitu menggunakan nama mesin asli untuk bidang yang dihapus
  2. Selain itu, saya dapat mengubah nilai kolom yang dihapus di dalam database ini dari '1' ke '0'.

Saya telah melakukan hal di atas dengan database 'hantu' lain yang saya temukan yang disebut sesuatu seperti "field_revision_field_74" ...

Masalah saya sekarang adalah bahwa bidang yang saya ganti nama tidak muncul sebagai bidang yang sudah ada sebelumnya pada jenis isian saya kelola tampilan bidang atau di admin> laporan> daftar bidang. Ketika saya menjalankan 'bidang info-bidang drush' juga tidak ada.

Bagaimana cara mengembalikannya? Saya berasumsi bahwa ada database lain yang merujuk padanya yang perlu saya edit.

Terima kasih!


Apakah Anda memiliki cadangan seluruh database sebelum Anda menghapus bidang?
Ollie

Sayangnya tidak. Namun saya memecahkan masalah.
iain maitland

Jawaban:


14

Sebuah pertanyaan yang bagus, dan mengejutkan tidak ada cara yang lebih mudah untuk mengembalikan bidang yang dihapus, mengingat datanya masih tersedia.

Dengan asumsi Anda memiliki:

  1. Mengganti nama field_deleted_ * tabel kembali ke field_data_field_myfield dan field_revision_field_myfield (yang terakhir juga penting)
  2. Diperbarui bendera 'dihapus' dari 1 ke 0 di tabel data yang relevan.

Ada juga

  • field_config

Konfigurasi bidang utama

  • field_config_instance

Konfigurasi bidang pada bundel entitas tertentu.

Anda mungkin perlu menyesuaikan bendera 'dihapus' di sana juga:

misalnya:

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
Terima kasih atas respon yang cepat. Mengedit database field_config dan field_config_instance berhasil.
iain maitland
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.