выводит список из типов другого вида (для character varying только name, text т.д.).
При попытке поменять через ALTER TABLE table_name ALTER COLUMN column_name TYPE jsonb выдаёт ошибку, column "column_name" cannot be cast automatically to type jsonb
Так не выйдет, нет правила преобразования из varchar в jsonb
Таблица пустая. Что делать?
drop column, add column
Таков путь. "Таблица пустая" - слишком слабое допущение для многопользовательской БД.
Спасибо, буду копать
так попробуйте alter table tbl_name ALTER COLUMN column_name TYPE jsonb using to_jsonb(column_name);
Храни тебя господь
Благодарю, сработало
Замечу, что если в таблицэ 100500 данных и ALTER .. USING создаёт проблемы со скоростью -- то можно добавить столбец, перегнать в него данные хоть по частям, потом удалить предыдущий столбец и переименовать новый (последнее -- можно в транзакцыи если шьёте "на жывую").
если этот столбец PK или на него есть REFERENCES, то всё чутка интересней становится…
Ну так, умеренно. То есть PK -- вообще не проблема, создаёшь уникальный индэкс, потом оно почти мгновенно переименовывается. CONSTRAINT переделывать -- ну, так, но с ALTER TABLE ... ADD CONSTRAINT ... NOT VALID -- в общем, всё тожэ в бэкграунде делается.
Обсуждают сегодня