La siguiente función está contenida en process_login.install como parte de un módulo personalizado llamado process_login. El módulo funciona si creé manualmente la tabla de la base de datos, pero naturalmente me gustaría que la tabla se creara automáticamente en la instalación.
La función en sí no genera un error de esquema al instalar el módulo. Pero tampoco crea la tabla de base de datos process_login_register en la base de datos Drupal 7 MySQL.
No hay otros errores que pueda ver o problemas informados por Site Report.
Lo eliminé por completo y lo reinstalé varias veces. He buscado mucho en la web y consultado dos libros que tengo sobre el desarrollo de Drupal. No puedo ver nada malo con esta función (se enumera a continuación).
NOTA: También he intentado definir 'id' como serial pero obtengo el mismo resultado (es decir, no se ha creado ninguna tabla).
Me he quedado sin ideas. ¿Alguien sabe por qué esta función no funciona?
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()
. La instalación de un módulo solo se puede hacer después de que se haya desinstalado (usando la pestaña de desinstalación o devel / reinstalar), después de lo cual se eliminan todas las tablas creadas por el módulo. Cuando instala el módulo,hook_install()
se ejecuta como era de esperarRespuestas:
Uso
drush dre -y [module]
que deshabilita, desinstala y luego vuelve a habilitar el módulo. La-y
bandera lo hace aún más rápido, evitando que tengas que presionar y entrar tres veces.fuente
Solo si desinstala un módulo y luego lo vuelve a instalar, las tablas de la base de datos que usa y declara
hook_schema()
se vuelven a crear.Para desinstalar un módulo, debe:
Desmarque la casilla de verificación que se muestra para el módulo
Haga clic en Guardar configuración
Haga clic en la pestaña: Desinstalar_
Haga clic en el botón Desinstalar
En la página siguiente, confirme que desea desinstalar ese módulo haciendo clic en el botón Desinstalar
Como alternativa, si ha instalado Drush, puede usar los siguientes comandos.
Reemplace
$module
con el nombre corto del módulo, entre los vértices y sin la extensión .module.Lo que ha hecho es deshabilitar el módulo y luego volver a habilitarlo. Incluso si eliminó el directorio que contiene el módulo, para Drupal lo que ha hecho es simplemente deshabilitarlo y luego volverlo a habilitar.
fuente