web-dev-qa-db-fra.com

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

J'essaie de créer un module pour Drupal 7 et je dois créer 3 tables et 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.

14
Tyler Durden

Il vous manque la propriété length pour la colonne varchar ('liste'). length est requis, donc le CREATE TABLE la requête échouera.

À partir des documents 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".

11
Clive

myodule_schema a une faute de frappe. Un m est manquant après le y.

4
BetaRide