MySQL ADD IGNORE COLUMN运行不正常?

时间:2010-11-17 06:44:21

标签: mysql sql mysql-error-1060

我正在尝试使用以下代码将列添加到表中。

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

我正在使用IGNORE,因为出于各种原因我不想进入,这个代码可能被多次调用。我想添加列,但在列已存在的情况下忽略错误。我没有默默地失败并继续前进,而是收到以下错误:

#1060 - Duplicate column name 'history_ip'

我能做些什么让这项工作成功吗?

1 个答案:

答案 0 :(得分: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");