代码之家  ›  专栏  ›  技术社区  ›  Jason Axelrod

mysql add ignore column没有正常工作?

  •  0
  • Jason Axelrod  · 技术社区  · 13 年前

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

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

    我之所以使用ignore,是因为我不想进入的各种原因,可能会多次调用此代码。我想添加列,但如果列已经存在,请忽略错误。我得到以下错误,而不是默默地失败并继续前进:

    #1060 - Duplicate column name 'history_ip'
    

    我能做些什么来完成这项工作吗?

    1 回复  |  直到 13 年前
        1
  •  0
  •   Jason Axelrod    13 年前

    最后我使用了一个函数来处理这个问题:

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