我正在尝试使用以下代码向表中添加列。
ALTER IGNORE TABLE `EWRcarta_history` ADD `history_ip` int(10) unsigned NOT NULL DEFAULT '0'
我之所以使用ignore,是因为我不想进入的各种原因,可能会多次调用此代码。我想添加列,但如果列已经存在,请忽略错误。我得到以下错误,而不是默默地失败并继续前进:
#1060 - Duplicate column name 'history_ip'
我能做些什么来完成这项工作吗?
最后我使用了一个函数来处理这个问题:
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");