Comment créer une table lors de l'installation du module


14

J'essaie de créer un module pour Drupal 7 et j'ai besoin de créer 3 tables et de le remplir. Mais d'abord, je dois le créer.

Dans le fichier mymodule.install j'ai

function mymodule_install() {

}

function mymodule_uninstall() {

}


function myodule_schema() {
  $schema['mymodule_table'] = array(
    'description' => t('First table'),
    'fields' => array(
      'id' => array(
        'description' => t('My unique identifier'),
        'type' => 'int',
        'unsigned' => true,
        'not null' => true,
      ),
      'list' => array(
        'description' => t('list'),
        'type' => 'varchar',
        'not null' => true,
      ),
    ),
    'primary key' => array('id'),
  );
  return $schema;     
}

Qu'est-ce que je fais mal? Chaque fois que je teste le module, je le désactive -> désinstaller -> Effacer le cache des performances -> l'activer.


3
Si vous avez installé drush et devel, vous pouvez utiliser drush devel-reinstall mymodulepour réinstaller rapidement votre module
FLY

Réponses:


11

Il vous manque la lengthpropriété de la varcharcolonne («liste»). lengthest requis pour que la CREATE TABLErequête échoue.

À partir des documents de l'API de schéma :

Tous les paramètres à l'exception de «type» sont facultatifs, sauf que les colonnes de type «numérique» doivent spécifier «précision» et «échelle», et les colonnes «varchar» doivent spécifier «longueur».


4

myodule_schemaa une faute de frappe. Un mest manquant après le y.


Merci BetaRide, c'était une erreur de transcription. Je vous donne un vote parce que vous avez lu mon post et en fait j'ai vraiment trouvé une faute d'orthographe sur le nom de la fonction eh eh
Tyler Durden
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.