İçinde yeni bir tablo oluşturduğunuzda hook_schema()
, o tablo da eklenmelidir hook_update_N()
mi? Ya da databae güncellemelerinin otomatik olarak tablo eklemesi için bir hile ya da kaçırdığım bir şey var mı?
Hook_update_N () dokümantasyonu oysa yeni tablolar tanıtan hakkında hiçbir şey açıklamıyor belgelenmesihook_schema()
diyor ki:
Bu kanca tarafından bildirilen tablolar modül ilk etkinleştirildiğinde otomatik olarak oluşturulur ve modül kaldırıldığında kaldırılır.
(Vurgulama benimdir)
Ve öyleyse, hem hook_update_N () hem de hook_schema () 'da yeni tablo için şema tanımlarının çoğaltılmasından en iyi nasıl kaçınılır. Şemaya aşağıdaki gibi atıfta bulunmanız yeterlidir:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Çalışıyor gibi görünüyor, ancak bir kullanıcı güncelleştirmeleri çalıştırır ve iki veya daha fazla hook_update_N () s çalıştırırsa tabloyu yeniden değiştirdiğinizde başarısız olur. Sonuçta: ilk hook_update_N zaten doğru veritabanını kuracak ve ikinci hook_update_M () zaten güncel olan sütunları eklemeye / değiştirmeye / değiştirmeye çalışacaktır.
Nasıl anlaştın onunla birlikte?