由于夹具错误,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
也一样,它经常把事情搞砸,admin
和 auth.Permission
--natural-primary --natural-foreign
将使用一些更自然的 PK 而不是 ID(例如,当您有一些 unique=True
字段时)
【讨论】:
以上是关于由于夹具错误,Django datadump 和 loaddata 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 中为 Selenium 测试加载夹具时出现完整性错误
安装夹具(SQLite3 数据库)时,cygwin 上的 Django loaddata 命令返回错误
安装夹具时 Django 1.10 引发错误:没有这样的列:REFERRED.id