Django 3.1+:(fields.E180) SQLite 不支持 JSONFields

问题描述 投票:0回答:2

我使用 Django 3.1 中宣布的新

JSONField
创建了一个 Django 项目,它支持所有数据库。

我已在 Linux 计算机上成功使用此字段,但在 Windows 上使用同一项目运行

python manage.py migrate
失败,并显示以下消息:

(fields.E180) SQLite does not support JSONFields.

两台 PC 中使用相同版本的 Python 和 Django。

django sqlite jsonfield django-3.1
2个回答
23
投票

要将

JSONField
与 Django 3.1+ 和 sqlite 一起使用,必须安装
JSON1
sqlite 扩展

要在 sqlite 上启用 JSON1,请按照 Django wiki 上的说明操作:https://code.djangoproject.com/wiki/JSON1Extension

Windows 说明:

  • 检查你的 python 安装 - 是 32 位还是 64 位?奔跑:
    python -c "import platform;print(platform.architecture()[0])"
  • 下载与您的 Python 安装(32 位或 64 位)匹配的 预编译 DLL
  • 找到您的 Python 安装。默认情况下,它应该位于
    %localappdata%\Programs\Python\PythonXX
    中,其中 XX 是 Python 版本。例如,它位于
    C:\Users\<username>\AppData\Local\Programs\Python\Python37
    。如果您将Python安装目录添加到PATH环境变量中,您可以在命令提示符下运行命令
    where python
    来找到它。 输入 Python 安装中的 DLL 目录。
  • 重命名(或删除)
    sqlite3.dll
    目录内的
    DLLs
  • 从下载的DLL存档中提取
    sqlite3.dll
    并将其放入
    DLLs
    目录中。
  • 现在,JSON1 扩展应该可以在 Python 和 Django 中使用了。

0
投票

我在尝试应用 django-allauth 模块的迁移时遇到了同样的问题;并切换到新版本的Python解决了这个问题。

根据 Django 网站,版本应该是 3.9+。 https://code.djangoproject.com/wiki/JSON1Extension

© www.soinside.com 2019 - 2024. All rights reserved.