La fonction suivante est contenue dans process_login.install dans le cadre d'un module personnalisé appelé process_login. Le module fonctionne si j'ai créé manuellement la table de base de données, mais naturellement je voudrais que la table soit créée automatiquement lors de l'installation.
La fonction elle-même ne génère pas d'erreur de schéma lors de l'installation du module. Mais il ne crée pas non plus la table de base de données process_login_register dans la base de données Drupal 7 MySQL.
Je ne vois aucune autre erreur ni aucun problème signalé par Site Report.
Je l'ai complètement supprimé et réinstallé plusieurs fois. J'ai beaucoup cherché sur le Web et consulté deux livres que j'ai sur le développement de Drupal. Je ne vois rien de mal avec cette fonction (répertoriée ci-dessous).
REMARQUE: j'ai également essayé de définir «id» comme série mais j'obtiens le même résultat (c'est-à-dire qu'aucune table n'a été créée).
Je n'ai plus d'idées. Est-ce que quelqu'un sait pourquoi cette fonction ne fonctionne pas?
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()
. L'installation d'un module ne peut être effectuée qu'après avoir été désinstallé (en utilisant l'onglet de désinstallation ou développer / réinstaller), après quoi toutes les tables créées par le module sont supprimées. Lorsque vous installez ensuite le module, il hook_install()
s'exécute comme prévu