= Error message =

PDOException: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'panel' at row 1: INSERT INTO {panels_pane} (did, panel, type, subtype, shown, access, configuration, cache, style, css, extras, position, locks) 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, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12); Array ( [:db_insert_placeholder_0] => 20 [:db_insert_placeholder_1] => center_cellular_services__controls [:db_insert_placeholder_2] => custom [:db_insert_placeholder_3] => custom [:db_insert_placeholder_4] => 1 [:db_insert_placeholder_5] => a:0:{} [:db_insert_placeholder_6] => a:5:{s:11:"admin_title";s:8:"Controls";s:5:"title";s:17:"Cellular Services";s:4:"body";s:3:"aeo";s:6:"format";s:13:"filtered_html";s:10:"substitute";i:1;} [:db_insert_placeholder_7] => a:0:{} [:db_insert_placeholder_8] => a:1:{s:8:"settings";N;} [:db_insert_placeholder_9] => a:0:{} [:db_insert_placeholder_10] => a:0:{} [:db_insert_placeholder_11] => 0 [:db_insert_placeholder_12] => a:0:{} ) in drupal_write_record() (line 7013 of /var/www/drupal7/includes/common.inc).

= Cause =

This one seems pretty simple. When a frame is added to a stack, it is given a machine name. When saving a page layout __ is used in the column 'panel'. It makes sense because this causes every panel to be unique where there otherwise could be a collision.

It turns out that this can make it pretty easy to hit a size limit for that column. This would be especially true if the default copy_of_ were to exist from cloning.

= Potential Solution =

My guess is that you can very easily resolve this. You did after all make an extremely amazing module which seems to be pretty cleanly coded. Perhaps instead of allowing users to edit the machine_name you could simply make it a hidden items and make it a int that auto-increments. Maybe even a check in a few places to make sure that the limit isn't reached.

btw- Amazing module, it's saved me many hours of work. I'd dare say it's saved me over a day worth of work on this single site that I'm using it on. ... maybe even two days.

Comments

gmclelland’s picture

I just ran into this problem as well. Thanks for posting a solution in the mean time.

arturzagreby’s picture

Status: Active » Needs review

It can be also fixed by changing field 'panel' size in 'panels_pane' table

nwom’s picture

Version: 7.x-1.0-alpha2 » 7.x-1.x-dev
Priority: Normal » Major

The problem still exists in the newest dev.

zuernbernhard’s picture

function MYMODULE_update_7000(&$sandbox) {
  // Increase length for type column in panels_pane
  $new_type_spec = array(
    'type' => 'varchar',
    'length' => '255',
    'default' => '',
  );
  db_change_field('panels_pane', 'type', 'type', $new_type_spec);

  // Increase length for pane column in panels_pane
  $new_panel_spec = array(
    'type' => 'varchar',
    'length' => '255',
    'default' => '',
  );
  db_change_field('panels_pane', 'panel', 'panel', $new_panel_spec);
}
nwom’s picture

Status: Needs review » Needs work

Setting to Needs Work, since no patch is attached, however code is available.