Aşağıdaki işlev, process_login.install içinde process_login adı verilen özel bir modülün bir parçası olarak bulunur. Modül, veritabanı tablosunu manuel olarak oluşturduysam çalışır, ancak doğal olarak tablonun kurulum sırasında otomatik olarak oluşturulmasını isterim.
İşlev, modülün yüklenmesi sırasında bir şema hatası oluşturmaz. Ancak Drupal 7 MySQL veritabanında process_login_register veritabanı tablosunu da oluşturmaz.
Görebildiğim başka hatalar veya Site Raporu tarafından bildirilen sorunlar yok.
Tamamen çıkardım ve defalarca yeniden kurdum. İnternette kapsamlı bir araştırma yaptım ve Drupal gelişimi hakkında iki kitaba baktım. Bu işlevle ilgili yanlış bir şey göremiyorum (aşağıda listelenmiştir).
NOT: Ben de seri olarak 'id' tanımlamayı denedim ama aynı sonucu elde (yani hiçbir tablo oluşturuldu).
Fikirlerim bitti. Bu işlevin neden çalışmadığını bilen var mı?
function process_login_schema(){
$schema['process_login_register'] = array(
'description' => 'Register a specific computer with the system.',
'fields' => array(
'id' => array(
'description' => 'Primary identifier.',
'type' => 'int',
'unsigned' => TRUE,
'size' => 'normal',
'not null' => TRUE,
'default' => 0,
),
'ip' => array(
'description' => "The user's IP address at registration.",
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
),
'user_agent' => array(
'description' => "The user's browser user agent string at registration.",
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
),
'primary key' => array('id'),
);
return $schema;
}
hook_enable()
. Bir modülün kurulması ancak kaldırıldıktan sonra (kaldırma sekmesi veya geliştirme / yeniden yükleme kullanılarak) yapılabilir, daha sonra modül tarafından oluşturulan tüm tablolar silinir. Daha sonra modülü hook_install()