Bir güncelleme işlevi ( MYMODULE_update_7101
) tarafından oluşturulan bir tablonun ( ) oluşturduğu bir durum vardı , ancak bu tablo her önbellek kodunda bir yerde açık ve neredeyse her sarhoş çağrıda yer alıyordu (temelde tüm menüler için varlık türlerinin isimlerini alıyordu. Başka). Koşmak ilk yerine üçüncü drush updatedb
koşuyordu MYMODULE_update_7101
.
@Macaleaa ve @moshe weitzman tarafından önerilen çözümü denedim:
drush php-eval 'module_load_install('MYMODULE');MYMODULE_update_7101();'
çalıştırmadan önce drush updatedb
, ancak bu işe yaramadı - sarhoş koşusu başarısız oldu çünkü updatedb
tekrar çalıştı MYMODULE_update_7101()
ve hata verdi, tablonun zaten var olduğunu söyledi. Temel olarak, yukarıdaki kod güncellemeyi çalıştırmıştı, ancak güncellemenin çalıştığı sistemdeki izini bırakmadı. Muhtemelen update.php
db, vb modülün son sürüm numarasını saklamak için her güncelleme çalıştırdıktan sonra yapmanız gereken bir sürü başka şey vardır.
update.php
Her bir güncelleme fonksiyonunun gerçekte nasıl çalıştığını ve sonrasında ne yaptığını, güncelleme fonksiyonunu çağıracak ve diğer tüm işlemleri yapan bir fonksiyon aradığımı görmeye gittim . Buna ulaşmaktan vazgeçtim:
include_once DRUPAL_ROOT . "/includes/update.inc";
$c["results"]["#abort"] = array();
update_do_one("MYMODULE", 7101, array(), $c);
Hangi gerçekten sarhoş ile koştum:
drush eval 'include_once DRUPAL_ROOT . "/includes/update.inc"; $c["results"]["#abort"] = array(); update_do_one("MYMODULE", 7101, array(), $c);'
Güncelleme yapıldı, sorun olmadı, fakat daha sonra MYMODULE sürüm 7101 koştuğumda hala güncellemeler listesinde updatedb
göründü, her ne kadar yanlış olsa da koştu ve her şey sitenin incelemesi için iyi görünüyordu.
Biraz hack ve 6 yıl gecikti, ama her şey yolunda mı bitti?