I've built a custom field using the Field API. I've defined the following element:

      $element['tabcontent'] = array(
        '#title' => t('Tab content'),
        '#type' => 'text_format',
        '#required' => $required,
        // use #default_value to prepopulate the element
        // with the current saved value
        '#default_value' => isset($item['tabcontent']) ? $item['tabcontent'] : '',
    	'#tree' => true,
      	'#rows' => 10,
     	'#format' => 'full_html',
    	'#base_type' => 'textarea',
      );

I've got the following code in the install file:

    function tabfield_field_schema($field) 
    {
     
      $columns = array(
        'tabtitle' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
        'tabcontent' => array('type' => 'text','not null' => TRUE,'size' => 'normal','description' => 'Question prompt','length' => '1000'  ),
      );
    
    
      return array(
        'columns' => $columns,
        'indexes' => array(),
      );
    }


However, I get the following error when saving a new node:

> Warning: preg_match_all() expects parameter 2 to be string, array
> given in _media_generate_tagMap() (line 186 of
> C:\Workspace\RnD\drupal1\sites\all\modules\media\includes\media.filter.inc).

> Warning: Invalid argument supplied for foreach() in
> _media_generate_tagMap() (line 187 of C:\Workspace\RnD\drupal1\sites\all\modules\media\includes\media.filter.inc).

> Warning: htmlspecialchars() expects parameter 1 to be string, array
> given in check_plain() (line 1572 of
> C:\Workspace\RnD\drupal1\includes\bootstrap.inc).

> PDOException:
> SQLSTATE[21S01]: Insert value list does not match column list: 1136
> Column count doesn't match value count at row 1: INSERT INTO
> {field_data_field_tab} (entity_type, entity_id, revision_id, bundle,
> delta, language, field_tab_tabtitle, field_tab_tabcontent) VALUES
> (:db_insert_placeholder_0, :db_insert_placeholder_1,
> :db_insert_placeholder_2, :db_insert_placeholder_3,
> :db_insert_placeholder_4, :db_insert_placeholder_5,
> :db_insert_placeholder_6, :db_insert_placeholder_7_value,
> :db_insert_placeholder_7_format); Array ( [:db_insert_placeholder_0]
> => node [:db_insert_placeholder_1] => 17 [:db_insert_placeholder_2] => 17 [:db_insert_placeholder_3] => tabbed_page
> [:db_insert_placeholder_4] => 0 [:db_insert_placeholder_5] => und
> [:db_insert_placeholder_6] => ss [:db_insert_placeholder_7_value] =>
> ss [:db_insert_placeholder_7_format] => full_html ) in
> field_sql_storage_field_storage_write() (line 448 of
> C:\Workspace\RnD\drupal1\modules\field\modules\field_sql_storage\field_sql_storage.module).