2010-12-03 6 views
0

J'ai module et j'ai mise à jour pour modifier la table de base de données, peu je dois faire quelque chose commeDrupal: mise à jour le module

 
ALTER TABLE `TABLE` ADD `FIELD` INT UNSIGNED NOT NULL AFTER `SOME_FIELD` 

donc est-il construit en fonction de Drupal pour faire ce changement je considérais db_add_field La fonction n'a pas fonctionné?

Sultan

+0

Quel est le problème avec db_add_field? – tamasd

+0

Je ne pouvais pas comprendre comment dire db_add_field APRÈS certains FIELD_2 – sultan

+0

Solution trouvée db_add_field ('TABLE', 'FIELD', "VARCHAR (255) NON NULL DEFAULT '0' APRÈS FIELD_2"); – sultan

Répondre

2

db_add_field() En utilisant

db_add_field('TABLE', 'FIELD', "VARCHAR(255) NOT NULL DEFAULT '0' AFTER FIELD_2"); 
0

Le dessus ne fonctionne pas, pour une laisse le premier argument (la référence à $ ret) et le quatrième argument ne permettra pas à une première requête sql, seulement un tableau structuré.

Ce que je devais faire était ce (changement hook_update_N à modulename_update_XXXX selon la documentation api de drupal bien sûr):

function hook_update_N(&$sandbox) { 
    // We use update_sql here, instead of db_add_field because we cannot specify 
    // AFTER in the db_add_field. 
    $ret = array(); 
    $ret[] = update_sql("ALTER TABLE {table} ADD `FIELD` INT UNSIGNED NOT NULL AFTER `SOME_FIELD`"); 
    return $ret; 
} 

Hope this helps quelqu'un d'autre.

Questions connexes