LoginSignup
1
0

More than 1 year has passed since last update.

DjangoのJSONfieldのエラー:(fields.E180) SQLite does not support JSONFields.

Last updated at Posted at 2021-11-26

環境
OS: Windows10
Python: 3.9.5
Django: 3.2.8

エラーが起きた状況

Djangoのmodels.pyにて、JSONを扱いたかったので、

models.py
class Hoge(models.Model):
    hogefield = models.JSONField()

として、
ファイルの変更後、例によって、

python manage.py makemigrations
python manage.py migrate

としたら、

hogeapp.Hoge: (fields.E180) SQLite does not support JSONFields

と表示された。

原因

「JSON1 extension」が有効でないことが原因。

(公式にも書いてあるけど)「JSON1 extension」が有効になっているかどうかは

プロジェクトディレクトリ>python manage.py shell
>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> cursor = conn.cursor()
>>> cursor.execute('SELECT JSON(\'{"a": "b"}\')')

を実行してみればわかる。
→何もエラーが出なければ有効
→エラーが出たら有効になっていない。

解決策

「原因」セクションでの確認用コードでエラーが起きるか確認してみて、エラーの場合は公式通りに解決する。

当たり前のことだが、Linux, macOS, Windowsで対処法が違うので注意。
ちなみに、pythonのバージョンが3.9以降ならエラーは起きないとのこと。

参考

https://code.djangoproject.com/wiki/JSON1Extension
https://stackoverflow.com/questions/62637458/django-3-1-fields-e180-sqlite-does-not-support-jsonfields

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0