Привет! Я создал новый тип материала, добавил в него 5 полей. У одного текстового поля максимальная длина 60 символов.
Теперь вот появилась необходимость расширить эту длину до 250 символов, но в настройках поля "Field settings" поле Maximum length не активно и надпись "There is data for this field in the database. The field settings can no longer be changed."
Как изменить длину?
Комментарии
Там таблиц до х и больше. В какой править?
вот Вам пример, пробуйте.
И что вы этой картинкой хотели сказать?
Поле, которое я хочу расширить с 60 символов до 250 называется arctic.
В базе нашел 2 таблицы field_data_field_arctic и field_Revision_field_arctic в обоих таблицах изменил параметр field_artic_value до 250.
Но все-равно при добавлении нового матереила в это поле больше 60 символов не пишется.
В общем решение вот такое: помимо изменения 2 таблиц field_data_field_arctic и field_Revision_field_arctic необходимо еще подправить field_config.
нашел вот здесь http://stackroulette.com/drupal/8829/undefined
Решение написано здесь: http://drupal.stackexchange.com/questions/8829/how-to-change-the-length-...
Например, меняем длину текстового поля с 10 до 25 символов.
Для этого выполняем запросы в базе:
CHANGE `field_text_value` `field_text_value` VARCHAR( 25 )
CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
CHANGE `field_text_value` `field_text_value` VARCHAR( 25 )
CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
Далее меняем в таблице field_config настройки поля "field_имя_поля". Настройки "зашифрованы" в BLOB
Делаем запрос и расшифровываем внутренности этого BLOB:
FROM `field_config` WHERE field_name = 'field_имя_поля';
Получаем что-то вроде этого:
{s:10:"max_length";s:2:"10";s:17:"field_permissions";a:5:
//и много других символов...
Из всей полученной массы символов находим запись ......{s:10:"max_length";s:2:"10";........
В нем мы изменяем 10 на 25. Все остальные символы оставляем без изменений. И выполняем запрос к базе:
SET DATA = 'a:7:{...a:2:{s:10:"max_length";s:2:"25";...}'
WHERE `field_name` = 'field_имя_поля'
(в запросе, там где "data = ' a:7:......" вставляем полностью полученное из запроса BLOB поле, но с измененными значениями)
P.S. В куске поля BLOB (из нашего примера, .....{s:10:"max_length";s:2:"10";.....), s:2 указывает на разрядность поля. Например, 10 символов s:2 (2 разряда)
255 символов s:3 (3 разряда)
5 символов s:1 (1 разряд)
Очищаем кеш базы.