Якщо ви хочете змінити тип атрибут продукту з випадаючого списку на текстовий у Magento 2, все, що вам потрібно зробити, це виконати такі SQL-запити (будь ласка, зробіть резервну копію бази даних перед виконанням):

1. Цей запит змінить налаштування атрибута та перетворить його на текстовий атрибут.

UPDATE eav_attribute SET
backend_type = "varchar",
frontend_input = "text",
source_model = ""
WHERE attribute_code = "MY_ATTRIBUTE_CODE";

2. Цей запит скопіює дані атрибута випадаючого списку до таблиці значень атрибута тексту та замінить ідентифікатори опцій їхніми фактичними мітками (текст).

INSERT INTO catalog_product_entity_varchar
SELECT null as value_id, pei.attribute_id, pei.store_id, pei.entity_id, aov.value as value
FROM catalog_product_entity_int pei
LEFT JOIN eav_attribute_option ao ON pei.attribute_id = ao.attribute_id
LEFT JOIN eav_attribute_option_value aov ON ao.option_id = aov.option_id
WHERE
pei.value IS NOT NULL
AND pei.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = "MY_ATTRIBUTE_CODE")
AND aov.store_id = 0
AND pei.value = ao.option_id;

3. Цей запит видалить усі застарілі дані для значень атрибута випадаючого списку.

Увага! У запитах, будь ласка, замініть " MY_ATTRIBUTE_CODE " на ваш фактичний код атрибута.

DELETE FROM  catalog_product_entity_int WHERE attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = "MY_ATTRIBUTE_CODE");
DELETE s.* FROM eav_attribute_option_value s
INNER JOIN eav_attribute_option o on o.option_id = s.option_id
INNER JOIN eav_attribute a on a.attribute_id = o.attribute_id
WHERE a.attribute_code IN ('MY_ATTRIBUTE_CODE');
DELETE s.* FROM eav_attribute_option_swatch s
INNER JOIN eav_attribute_option o on o.option_id = s.option_id
INNER JOIN eav_attribute a on a.attribute_id = o.attribute_id
WHERE a.attribute_code IN ('MY_ATTRIBUTE_CODE');
DELETE FROM  eav_attribute_option WHERE attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = "MY_ATTRIBUTE_CODE");

4. Промийте Кеш Magento та перевірте.