我有一個使用bradjasper的django-jsonfield
包的Postgres 9.4/Django 1.8數據庫。 (請參閱https://github.com/bradjasper/django-jsonfield)它運行良好,但我想升級現有數據以使用Postgres 9.6和Django 1.9的內置JSONField。 (請參閱https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/#jsonfield)這將允許對JSON內容進行更強大的搜索。我應該如何從bradjasper的django-jsonfield升級到Django的內置jsonfield?
如何將舊數據庫升級到新數據庫?
我已經試過: 我試着將一對架構遷移到
- 轉換的bradjasper JSONField到TextField,包括運行遷移。 (這應該不會改變數據庫,因爲bradjasper將數據存儲爲字符串。)
- 運行Django的
dumpdata
命令。 - 已更新Postgres & Django版本。
- 運行遷移將TextField轉換爲Django的JSONField。 (這應該是數據庫中的更改,從
text
或json
到jsonb
。) - 運行Django的
loaddata
命令。這給出了一個錯誤,如:u"[] (type <type 'unicode'>) is not a valid list for field url_methods"]: (myapp.mytable:pk=1) field_value was '[]'
我正在看postgresql migrating JSON to JSONB和Upgrade PostgreSQL JSON column to JSONB?但我希望最小化自定義SQL。
你也可以編輯/刪除現有的遷移?在做loaddata之前? – Sayse
我在dumpdata之前通過convert-to-textfield步驟運行遷移,然後在loaddata之前運行convert-from-textfield遷移。編輯步驟 - 嘗試一下,以便更清楚。 –