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ührtAntworten:
Verwenden Sie
drush dre -y [module]
diese Option, um das Modul zu deaktivieren, zu deinstallieren und anschließend wieder zu aktivieren. Das-y
Flag macht es noch schneller, ohne dass Sie y drücken und dreimal eingeben müssen.quelle
Nur wenn Sie ein Modul deinstallieren und anschließend erneut installieren, werden die verwendeten und deklarierten Datenbanktabellen
hook_schema()
neu erstellt.Um ein Modul zu deinstallieren, müssen Sie:
Deaktivieren Sie das Kontrollkästchen für das Modul
Klicken Sie auf Konfiguration speichern
Klicken Sie auf die Registerkarte: Deinstallieren_
Klicken Sie auf die Schaltfläche Deinstallieren
Auf der nächsten Seite, bestätigen Sie das Modul durch Klicken auf die deinstallieren möchten Deinstallieren Schaltfläche
Wenn Sie Drush installiert haben, können Sie alternativ die folgenden Befehle verwenden.
Ersetzen Sie
$module
durch den Kurznamen des Moduls, zwischen den Spitzen und ohne die Erweiterung .module.Sie haben das Modul deaktiviert und anschließend wieder aktiviert. Selbst wenn Sie das Verzeichnis mit dem Modul gelöscht haben, müssen Sie Drupal nur deaktivieren und dann wieder aktivieren.
quelle