【问题标题】:MySQL ADD IGNORE COLUMN not functioning properly?MySQL ADD IGNORE COLUMN 无法正常运行?
【发布时间】:2010-11-17 06:44:21
【问题描述】:

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

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

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

#1060 - Duplicate column name 'history_ip'

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

【问题讨论】:

    标签: mysql sql mysql-error-1060


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-20
      • 2011-06-20
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 2012-07-15
      相关资源
      最近更新 更多