First some background. This issue has the exact same symptoms as #185486: open_basedir restriction in effect which was never really solved, but below I have the cause and the solution.

The field panels_layout.name is a varchar(255) yet panels_display.layout is a varchar(32). The latter needs enough room to prefix the layout name with a word like "flexible". Therefore the former needs to be restricted to 32 minus max_length_of_prefix or perhaps the latter could just reference the layout id rather than the layout name?

I am marking this as critical because it can corrupt existing pages. After experiencing this issue I deleted my page and tried to recreate it, but then ran in to duplicate entry issues because some of the old stuff wasn't removed, most likely because it was looking for the truncated machine name.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

DamienMcKenna’s picture

Version: 6.x-3.x-dev » 7.x-3.x-dev

This exists in D7 too. Am bumping the version number so that a patch can be made for D7 and backported.

DamienMcKenna’s picture

Here are patches for the D6 and D7 branches. I changed the schema in-place rather than creating a new version because this is a definite bug and the change should not have any negative effects elsewhere.

DamienMcKenna’s picture

Duplicate tickets that were closed:

This one is the same problem in reverse - having the panels_mini.name column longer than 32 varchars causes problems with the core Block module:

merlinofchaos’s picture

Status: Needs review » Fixed

Committed to D6 and D7.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

  • Commit 7895ac9 on 7.x-3.x, pipelines, 7.x-3.x-i18n, 8.x-3.x by merlinofchaos:
    Issue #956394: Database column for "layout" field too small for some...