Saya sedang mengerjakan modul, dan saya mengubah beberapa tipe bidang dalam skema. Saya tidak mengambil cadangan sebelum mengujinya dan mengacaukan DB (itu hanya situs dev). Bagaimanapun, saya menginstal ulang semuanya, dan versi skema diatur ke pembaruan tertinggi. Namun, saya sebenarnya perlu menjalankan pembaruan; a Tampilan yang belum saya instal jika saya memiliki skema yang diperbarui dalam kode modul, jadi saya pikir ini akan menjadi cara yang baik untuk menguji pembaruan itu.
Bagaimana cara mereset versi skema modul saya ke versi tertentu? Di Drupal 7, saya akan melakukan ini:
drush sqlq "UPDATE system SET schema_version=8102 WHERE name='flllpdf' AND type='module'"
Drupal 8 sekarang menggunakan
keyvalue
layanan untuk menyimpan informasi tentang versi skema. Ini adalah API yang sama dengan yang digunakan oleh API Negara .Informasi nilai diserialisasi ketika disimpan dalam database, jadi menggunakan query SQL langsung tidak optimal. Sebagai gantinya, gunakan
drush php-eval
(atau skrip yang bootstraps Drupal, jika Anda tidak memiliki Drush) untuk menjalankan yang berikut:Ubah
fillpdf
dan8102
ke nama modul Anda dan versi skema yang diinginkan, masing-masing.Bentuk Drush dari perintah ini adalah:
drush ev "\Drupal::keyValue('system.schema')->set('fillpdf', (int) 8102)";
sumber
Untuk SET dan DAPATKAN pembaruan modul melalui kode (tanpa Drush). Di bawah ini adalah kode
sumber
Bisa juga langsung perbarui di database. Jika Anda menggunakan sesuatu seperti Sequel Pro (mac) atau database apa pun yang dimiliki alat Windows / linux, itu sangat mudah. Boleh dibilang bukan ide terbaik, dan tidak akan menyarankan melakukan ini terhadap basis data tingkat produksi, tetapi itu akan menyelesaikan pekerjaan!
Tabel = key_value
collection = system.schema
name = fillpdf (your_module)
value = perbarui ke i: 8102;
sumber