问题
I have alter my model from arrayfield to json field now i am receiving error
cannot cast type character varying[] to jsonb LINE 1: ...LUMN "questionaires" TYPE jsonb USING "questionaires"::jsonb.
How to fix this ? and how it did occur?
from
questionaires = ArrayField(models.CharField(max_length=4000), null=True, blank=True)
to
questionaires = JSONField(null = True,blank = True)
回答1:
I think you have to perform multiple stage migrates:
- Create temporary new field with type JSONField: Ex questionaires_2
- Write custom python migration RunPython to convert data manually
- Delete old field: questionaires
- Rename temporary field to the old one questionaires_2 -> questionaires
More advance: refer to this https://stackoverflow.com/a/21997589/533738
Not tested!!!
ALTER TABLE <Your Table>
ALTER COLUMN questionaires TYPE JSONB
USING translate(questionaires::text, '{}','[]')::JSONB;
来源:https://stackoverflow.com/questions/56250393/cannot-cast-type-character-varying-to-jsonb-django-migration