Fungsi berikut terkandung dalam process_login.install sebagai bagian dari modul khusus yang disebut process_login. Modul ini berfungsi jika saya secara manual membuat tabel database, tetapi secara alami saya ingin tabel dibuat secara otomatis saat instalasi.
Fungsi itu sendiri tidak menghasilkan kesalahan skema saat memasang modul. Tetapi tidak juga membuat tabel database process_login_register di database MySQL Drupal 7.
Tidak ada kesalahan lain yang bisa saya lihat, atau masalah yang dilaporkan oleh Laporan Situs.
Saya telah menghapusnya sepenuhnya dan menginstal ulang beberapa kali. Saya telah mencari web secara ekstensif, dan berkonsultasi dengan dua buku yang saya miliki tentang pengembangan Drupal. Saya tidak dapat melihat ada yang salah dengan fungsi ini (tercantum di bawah).
CATATAN: Saya juga mencoba mendefinisikan 'id' sebagai serial tetapi mendapatkan hasil yang sama (yaitu tidak ada tabel yang dibuat).
Saya sudah kehabisan ide. Adakah yang tahu mengapa fungsi ini tidak berfungsi?
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()
. Menginstal modul hanya dapat dilakukan setelah itu dihapus (menggunakan tab uninstall atau devel / instal ulang), setelah itu semua tabel yang dibuat oleh modul dihapus. Ketika Anda menginstal modul,hook_install()
jalankan seperti yang Anda harapkanJawaban:
Gunakan
drush dre -y [module]
yang menonaktifkan, mencopot pemasangan lalu mengaktifkan kembali modul. The-y
bendera membuatnya lebih cepat, menghindari Anda harus tekan y dan masukkan tiga kali.sumber
Hanya jika Anda menghapus modul, dan kemudian menginstalnya kembali, tabel database yang digunakan dan dideklarasikan dengannya
hook_schema()
dibuat ulang.Untuk menghapus modul, Anda harus:
Hapus centang pada kotak yang ditunjukkan untuk modul
Klik pada Simpan konfigurasi
Klik pada tab: Uninstall_
Klik pada tombol Uninstall
Pada halaman berikutnya, konfirmasikan Anda ingin menghapus modul itu dengan mengklik tombol Uninstall
Sebagai alternatif, jika Anda telah menginstal Drush, Anda dapat menggunakan perintah berikut.
Ganti
$module
dengan nama pendek modul, di antara apeks, dan tanpa ekstensi .module.Apa yang telah Anda lakukan adalah menonaktifkan modul, dan kemudian mengaktifkannya kembali. Bahkan jika Anda menghapus direktori yang berisi modul, untuk Drupal apa yang telah Anda lakukan hanya menonaktifkan, dan kemudian mengaktifkannya kembali.
sumber