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.

Tyler Durden
la source
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».

Clive
la source
4

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

BetaRide
la source
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