Agaknya Anda akan ingin tahu bidang mana yang perlu diperbarui, mungkin untuk melakukan beberapa logging atau memeriksa data. Untuk melakukan ini, dapatkan semua nama tabel dan kolom yang berisi _format
kolom:
select distinct TABLE_NAME, column_name
from information_schema.columns
where TABLE_SCHEMA = 'my_drupal_database_name' and column_name like '%_format';
Berbekal data ini, Anda dapat membangun kueri terpisah dari nilai-nilai itu. Periksa output terlebih dahulu; Anda mungkin perlu menghapus beberapa entri yang tidak berkaitan dengan konten / revisi. Saya sarankan menggunakan editor yang mampu menjalankan regex untuk membangun kueri. Saya mengubah data menjadi select [...] union
pernyataan besar dan kemudian menjalankan pembaruan kueri terhadapnya.
Menggunakan pendekatan ini menyelamatkan saya beberapa saat ketika saya perlu memperbarui ribuan node / revisi. Ingatlah untuk menghapus cache bidang (TIDAK ditutupi oleh drush cc all
!):
field_cache_clear();
Atau dengan drush:
drush sqlq "truncate table cache_field;"
Juga menghapus filter teks
Jika Anda juga menghentikan filter teks, setelah itu Anda perlu mengubah format teks default untuk CT yang memiliki bidang yang menggunakannya. Jika Anda tidak melakukan ini, pengguna Anda akan mendapatkan izin pesan ditolak dalam bidang yang menggunakan old_format
. Saya melakukan kueri ini untuk menemukan penyebabnya:
select * from field_config_instance where `data` LIKE '%old_format%';
Untuk melakukan perubahan, saya merasa lebih mudah untuk menggunakan antarmuka untuk mengunjungi setiap halaman pengaturan bidang dan tekan Simpan (data disimpan sebagai longblob dan sulit untuk mencari dan mengganti karena format yang lebih baik modul injeksi data). Bahkan bidang yang memiliki pemrosesan teks diatur ke Plain text
berisi old_format! Untuk bidang yang memiliki pemrosesan teks diatur ke Filtered text (user selects text format)
, Anda juga perlu memilih nilai default baru dan tekan Simpan.
Anda harus menghapus cache filter setelah menghapus filter (sekali lagi, tidak tercakup oleh drush cc all
!):
cache_clear_all('*', 'cache_filter', TRUE);
Atau dengan drush:
drush sqlq "truncate table cache_filter;"
field_cache_clear();
setelah perubahan dalamfield_data_...
danfield_revision_...
tabel