0

次のコードを使用して、テーブルに列を追加しようとしています。

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

IGNORE を使用しているのは、さまざまな理由で入りたくないため、このコードが数回呼び出される可能性があるためです。列を追加したいのですが、列が既に存在する場合はエラーを無視します。静かに失敗して先に進む代わりに、次のエラーが表示されます。

#1060 - Duplicate column name 'history_ip'

これを機能させるためにできることはありますか?

4

1 に答える 1

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");
于 2010-11-29T08:16:42.940 に答える