由于夹具错误,Django datadump 和 loaddata 无法正常工作

Posted

技术标签:

【中文标题】由于夹具错误,Django datadump 和 loaddata 无法正常工作【英文标题】:Django datadump and loaddata not working due to fixture error 【发布时间】:2020-02-25 23:27:36 【问题描述】:

这是我尝试转储 mysql DB 的方法:

 python3 manage.py dumpdata > dumpdata.json

然后,我尝试重新加载它:

python3 manage.py loaddata dumpdata.json

这是我得到的错误:

json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 226398200 (char 226398199)

django.core.serializers.base.DeserializationError: Problem installing fixture '/home/dumpdata.json': 

【问题讨论】:

【参考方案1】:

通常的情况是您在应用程序引导过程中打印某些内容。 您打印的那些内容最终会出现在您的 fixture.json 中,从而弄乱您的 JSON 结构。

为了使内容更具可读性,您可以使用:

python3 manage.py dumpdata --indent 4 --natural-primary --natural-foreign -e contenttypes -e auth.Permission -e sessions > dumpdata.json

一些细节:

--indent 4 将“美化”您的 JSON 输出,检查您的数据会更容易 -e sessions 将删除 session 的应用数据。 contenttype 也一样,它经常把事情搞砸,adminauth.Permission --natural-primary --natural-foreign 将使用一些更自然的 PK 而不是 ID(例如,当您有一些 unique=True 字段时)

【讨论】:

以上是关于由于夹具错误,Django datadump 和 loaddata 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义用户模型加载夹具错误的 Django 项目

在 Django 中为 Selenium 测试加载夹具时出现完整性错误

安装夹具(SQLite3 数据库)时,cygwin 上的 Django loaddata 命令返回错误

安装夹具时 Django 1.10 引发错误:没有这样的列:REFERRED.id

(Django)当我尝试将夹具文件加载到我的数据库中时,我不断收到字段冲突错误

加载夹具时 django unittest 出错