public function DatabaseSchema_mysql::addField

cis7 public DatabaseSchema_mysql::addField($table, $field, $spec, $keys_new = array())
cle7 public DatabaseSchema_mysql::addField($table, $field, $spec, $keys_new = array())
elmsmedia7 public DatabaseSchema_mysql::addField($table, $field, $spec, $keys_new = array())
icor7 public DatabaseSchema_mysql::addField($table, $field, $spec, $keys_new = array())
meedjum_blog7 public DatabaseSchema_mysql::addField($table, $field, $spec, $keys_new = array())
mooc7 public DatabaseSchema_mysql::addField($table, $field, $spec, $keys_new = array())

Add a new field to a table.


$table: Name of the table to be altered.

$field: Name of the field to be added.

$spec: The field specification array, as taken from a schema definition. The specification may also contain the key 'initial', the newly created field will be set to the value of the key in all rows. This is most useful for creating NOT NULL columns with no default value in existing tables.

$keys_new: Optional keys and indexes specification to be created on the table along with adding the field. The format is the same as a table specification but without the 'fields' element. If you are adding a type 'serial' field, you MUST specify at least one key or index including it in this array. See db_change_field() for more explanation why.

Overrides DatabaseSchema::addField


DatabaseSchemaObjectDoesNotExistException If the specified table doesn't exist.

DatabaseSchemaObjectExistsException If the specified table already has a field by that name.


includes/database/mysql/, line 323
Database schema code for MySQL database servers.




public function addField($table, $field, $spec, $keys_new = array()) {
  if (!$this->tableExists($table)) {
    throw new DatabaseSchemaObjectDoesNotExistException(t("Cannot add field %table.%field: table doesn't exist.", array('%field' => $field, '%table' => $table)));
  if ($this->fieldExists($table, $field)) {
    throw new DatabaseSchemaObjectExistsException(t("Cannot add field %table.%field: field already exists.", array('%field' => $field, '%table' => $table)));

  $fixnull = FALSE;
  if (!empty($spec['not null']) && !isset($spec['default'])) {
    $fixnull = TRUE;
    $spec['not null'] = FALSE;
  $query = 'ALTER TABLE {' . $table . '} ADD ';
  $query .= $this->createFieldSql($field, $this->processField($spec));
  if ($keys_sql = $this->createKeysSql($keys_new)) {
    $query .= ', ADD ' . implode(', ADD ', $keys_sql);
  if (isset($spec['initial'])) {
    $this->connection->update($table)->fields(array($field => $spec['initial']))->execute();
  if ($fixnull) {
    $spec['not null'] = TRUE;
    $this->changeField($table, $field, $field, $spec);



Error message

  • Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/elmsln_community/ in drupal_send_headers() (line 1499 of /var/www/html/elmsln_community/
  • Error: Call to undefined function apc_delete() in DrupalAPCCache->clear() (line 289 of /var/www/html/elmsln_community/
The website encountered an unexpected error. Please try again later.