This is what worked for me. Firstly, run the following code to change the attributes from varchar
to text
and move them into the right tables. Make sure you back up your website and database first!
START TRANSACTION;
SET @attribute_id = (SELECT attribute_id FROM rds_eav_attribute WHERE entity_type_id = 4 AND attribute_code = "meta_description");
UPDATE rds_eav_attribute SET frontend_class = 'validate-length maximum-length-XXX' WHERE attribute_code = 'meta_description';
UPDATE rds_eav_attribute SET backend_type = 'text' WHERE attribute_id = @attribute_id;
UPDATE rds_eav_attribute SET note = 'Maximum XXX chars' WHERE attribute_code = 'meta_description';
INSERT INTO rds_catalog_product_entity_text SELECT * FROM rds_catalog_product_entity_varchar WHERE attribute_id = @attribute_id;
DELETE FROM rds_catalog_product_entity_varchar where attribute_id = @attribute_id;
COMMIT;
Because it was the meta description I'm changing, I also had to change app\code\core\Mage\Adminhtml\Block\Catalog\Product\Edit\Tab\Attributes.php
lines 117-119 from:
if ($form->getElement('meta_description')) {
$form->getElement('meta_description')->setOnkeyup('checkMaxLength(this, 255);');
}
to:
if ($form->getElement('meta_description')) {
$form->getElement('meta_description');
}
Instead of hacking the core file though, I'd copy the file to app\code\local\Mage\Adminhtml\Block\Catalog\Product\Edit\Tab\Attributes.php
(although even this isn't recommended, but it's a workaround for the time being. Hopefully we'll see this changed in the Magento core at a later date.