Você precisa definir uma conversão a ser usada porque não há uma conversão padrão disponível.
Se todos os valores no
varcharColumn
cumprir com a definição enum, o seguinte deve funcionar:alter table foo
ALTER COLUMN varcharColumn TYPE enum_type using varcharColumn::enum_type;
Eu pessoalmente não gosto de enums porque eles são bastante inflexíveis. Eu prefiro uma restrição de verificação em uma coluna varchar se quiser restringir os valores em uma coluna. Ou - se a lista de valores muda frequentemente e vai crescer - uma boa e velha "tabela de consulta" com uma restrição de chave estrangeira.