[Résolu] fichier .install : aucune table créée !

Catégories:

Bonjour,

je suis en train de créer un module. J’ai voulu créer une table automatiquement à partir du fichier .install. Celui-ci doit être automatiquement exécuté quand le module est chargé.

Et là, aucune table n’est créée !

Je ne vois pas d’où cela peut venir. J’ai testé avec un db_query aussi mais sans succès.

Merci d’avance

Voici mon fichier.install :

<?php
function datehisto_schema() {
  $schema['dateshistos'] = array(
  'description' => t('stock les dates historiques tirées de wikipedia'),
  'fields' => array(
    'id' => array(
      'description' => t('id auto-incrémenté'),
      'type' => 'serial',
      'not null' => TRUE,
    ),
    'jour' => array(
      'description' => t('jour de la date distorique'),
      'type' => 'int',
      'not null' => TRUE,
    ),
    'mois' => array(
      'description' => t('mois de la date distorique'),
      'type' => 'int',
      'not null' => TRUE,
    ),
    'annee' => array(
      'description' => t('année de la date distorique'),
      'type' => 'int',
      'not null' => TRUE,
    ),
    'description' => array(
      'description' => t('description de la date historique'),
      'type' => 'varchar',
      'length' => '255',
      'not null' => TRUE,
    ),
  ),
  'primary key' => array('id'),
);
  return $schema;
}

function datehisto_install() {
  // Création de mes tables
  drupal_install_schema('datehisto');
   
   /db_query("CREATE TABLE {dateshistos} (
              id integer NOT NULL AUTO_INCREMENT ,
               jour int(2) NOT NULL ,
             mois int(2) NOT NULL ,
             annee int(4) NOT NULL ,
                description VARCHAR(255) NOT NULL ,
                PRIMARY KEY (id)
               );"
           );
/
}

function datehisto_uninstall() {
  // Suppression de mes tables.
  drupal_uninstall_schema('datehisto');
}

function token_update_1() {
  $ret = array();
  $ret[] = update_sql("UPDATE {system} SET weight = 10 WHERE name = 'token'");
  return $ret;
}

#

Bonjour,
les descriptions ne peuvent être données qu’au niveau de la table et non des champs.
Il faut donc les supprimer :

<?php

function datehisto_schema() {
 
$schema['dateshistos'] = array(
     
'description' => t('stock les dates historiques tirées de wikipedia'),
     
'fields' => array(
             
'id' => array(
                 
'type' => 'serial',
                 
'not null' => TRUE,
            ),
             
'jour' => array(
                 
'type' => 'int',
                 
'not null' => TRUE,
            ),
             
'mois' => array(
                 
'type' => 'int',
                 
'not null' => TRUE,
            ),
             
'annee' => array(
                 
'type' => 'int',
                 
'not null' => TRUE,
            ),
             
'description' => array(
                 
'type' => 'varchar',
                 
'length' => '255',
                 
'not null' => TRUE,
            ),
      ),
     
'primary key' => array('id'),
  );
  return
$schema;
}

function datehisto_install() {
 
// Création de mes tables
 
drupal_install_schema('datehisto');
}

function datehisto_uninstall() {
 
// Suppression de mes tables.
 
drupal_uninstall_schema('datehisto');
}

function token_update_1() {
 
$ret = array();
 
$ret[] = update_sql("UPDATE {system} SET weight = 10 WHERE name = 'token'");
  return
$ret;
}

?>

Cordialement, Aya

#

Bonjour, ça ne fonctionne toujours pas. je ne comprends pas.

merci de m’aider. Merci d’avance

#

Bonjour comment ce nomme ton module ?
Il faut que ton module ce nomme comme le début de tes fonctions.
si ton module s’appelle «test» il faudra écrire «test_install».
le fichier doit aussi avoir le même nom «test.install».
Je suppose que tu le sais déjà mais vérifie au cas où (problème de s ou autre).
Sinon moi le schema fonctionne vu que je l’ai tester.
Cordialement, Aya

#

Dès lors que vous activez pour la première fois votre module, celui-ci est considéré comme installé par Drupal. Drupal n’appellera donc pas votre hook_install() lors des prochaines activations et desactivation du module. Pour forcer un module a etre resinstallé, utilisez la fonction «Reinstall» du module Devel.

#

merci

Syndiquer le contenu