Die folgende Funktion ist in process_login.install als Teil eines benutzerdefinierten Moduls namens process_login enthalten. Das Modul funktioniert, wenn ich die Datenbanktabelle manuell erstellt habe, aber natürlich möchte ich, dass die Tabelle bei der Installation automatisch erstellt wird.
Die Funktion selbst generiert bei der Installation des Moduls keinen Schemafehler. Es wird jedoch auch nicht die Datenbanktabelle process_login_register in der Drupal 7 MySQL-Datenbank erstellt.
Es gibt keine anderen Fehler, die ich sehen kann, oder Probleme, die von Site Report gemeldet wurden.
Ich habe es vollständig entfernt und mehrfach neu installiert. Ich habe das Internet ausgiebig durchsucht und zwei Bücher konsultiert, die ich über die Drupal-Entwicklung habe. Ich kann mit dieser Funktion nichts falsches sehen (siehe unten).
HINWEIS: Ich habe auch versucht, 'id' als seriell zu definieren, erhalte jedoch das gleiche Ergebnis (dh es wurde keine Tabelle erstellt).
Ich habe keine Ideen mehr. Weiß jemand, warum diese Funktion nicht funktioniert?
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()
. Die Installation eines Moduls kann nur erfolgen, nachdem es deinstalliert wurde (über die Registerkarte "Deinstallieren" oder "Entwickeln / Neuinstallieren"). Danach werden alle vom Modul erstellten Tabellen gelöscht. Wenn Sie dann das Modul installieren, hook_install()
wird es wie erwartet ausgeführt