2010-11-17 62 views
0

我正在嘗試使用以下代碼將一列添加到表中。MySQL添加IGNORE COLUMN無法正常工作?

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

我正在使用IGNORE,因爲出於各種原因,我不喜歡進入該代碼可能會被調用多次。我想添加列,但在列已經存在的情況下忽略錯誤。我得到了以下錯誤:

#1060 - Duplicate column name 'history_ip' 

有沒有什麼我可以做的,使這項工作?

回答

0

最後我用一個函數來處理這個問題:

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); 
} 

然後當然我用的功能如下:

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