A função a seguir está contida em process_login.install como parte de um módulo customizado chamado process_login. O módulo funciona se eu criei manualmente a tabela do banco de dados, mas naturalmente gostaria que a tabela fosse criada automaticamente na instalação.
A função em si não gera um erro de esquema na instalação do módulo. Mas também não cria a tabela process_login_register do banco de dados no banco de dados MySQL do Drupal 7.
Não vejo outros erros ou problemas relatados pelo Site Report.
Eu o removi completamente e reinstalei várias vezes. Eu pesquisei bastante na web e consultei dois livros que tenho sobre o desenvolvimento do Drupal. Não consigo ver nada de errado com esta função (listada abaixo).
NOTA: Também tentei definir 'id' como serial, mas obtive o mesmo resultado (ou seja, nenhuma tabela criada).
Eu fiquei sem idéias. Alguém sabe por que essa função não está funcionando?
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()
. A instalação de um módulo só pode ser feita após a desinstalação (usando a guia de desinstalação ou o desenvolvimento / reinstalação), após o qual todas as tabelas criadas pelo módulo são excluídas. Quando você instala o módulo, elehook_install()
é executado conforme o esperadoRespostas:
Use o
drush dre -y [module]
que desativa, desinstala e reativa o módulo. A-y
bandeira o torna ainda mais rápido, evitando que você pressione y e insira três vezes.fonte
Somente se você desinstalar um módulo e reinstalá-lo posteriormente, as tabelas do banco de dados que ele usa e declara
hook_schema()
são recriadas.Para desinstalar um módulo, você precisa:
Desmarque a caixa de seleção mostrada para o módulo
Clique em Salvar configuração
Clique na guia: Desinstalar_
Clique no botão Desinstalar
Na página seguinte, confirme que você deseja desinstalar esse módulo clicando no botão Desinstalar
Como alternativa, se você instalou o Drush, pode usar os seguintes comandos.
Substitua
$module
pelo nome abreviado do módulo, entre vértices, e sem a extensão .module.O que você fez foi desativar o módulo e, em seguida, reativá-lo. Mesmo se você excluiu o diretório que contém o módulo, para o Drupal, o que você fez é apenas desativar e depois reativá-lo.
fonte