2010-11-17 4 views
0

J'essaie d'utiliser le code suivant pour ajouter une colonne à une table.MySQL ADD IGNORE COLONNE ne fonctionne pas correctement?

ALTER IGNORE TABLE `EWRcarta_history` 
    ADD `history_ip` int(10) unsigned NOT NULL DEFAULT '0' 

J'utilise IGNORE parce que, pour diverses raisons que je ne me sens pas comme entrer dans, ce code peut être appelé à plusieurs reprises. Je veux ajouter la colonne, mais ignorer l'erreur dans le cas où la colonne existe déjà. Au lieu de ne pas en silence et en mouvement, je reçois l'erreur suivante:

#1060 - Duplicate column name 'history_ip' 

Est-ce que je peux faire pour faire ce travail?

Répondre

0

Je fini par utiliser une fonction pour gérer ceci:

public static function addColumnIfNotExist($db, $table, $field, $attr) 
{ 
    if ($db->fetchRow('SHOW columns FROM `'.$table.'` WHERE Field = ?', $field)) 
    { 
    return false; 
    } 

    return $db->query("ALTER TABLE `".$table."` ADD `".$field."` ".$attr); 
} 

et puis bien sûr utiliser la fonction comme suit:

self::addColumnIfNotExist($db, "table", "column", "attributes"); 
Questions connexes