[英]Django fails to loaddata with deserialization error
I am running Wagtail which runs on django and when running the dumpdata
the following occurs我正在运行在 django 上运行的dumpdata
,并且在运行转储数据时会发生以下情况
python manage.py dumpdata --indent 2 --output dumps.json
CommandError: Unable to serialize database: no such table: wagtailimages_uploadedimage
After that I delete the sqlite database and remove the migrations from the apps migrations
directory so I can have an empty database and test the dumped data.之后,我删除 sqlite 数据库并从应用程序migrations
目录中删除迁移,这样我就可以拥有一个空数据库并测试转储的数据。 After running migrate
I execute loaddata dump1.json
and the following error comes up运行migrate
后,我执行loaddata dump1.json
并出现以下错误
Tracking file by folder pattern: migrations
Traceback (most recent call last):
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/serializers/json.py", line 68, in Deserializer
objects = json.loads(stream_or_string)
File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.8/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/pycharm-professional/plugins/python/helpers/pycharm/django_manage.py", line 52, in <module>
run_command()
File "/opt/pycharm-professional/plugins/python/helpers/pycharm/django_manage.py", line 46, in run_command
run_module(manage_file, None, '__main__', True)
File "/usr/lib/python3.8/runpy.py", line 207, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File "/usr/lib/python3.8/runpy.py", line 97, in _run_module_code
_run_code(code, mod_globals, init_globals,
File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/user/Desktop/projects/mytestwebapp/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/management/commands/loaddata.py", line 72, in handle
self.loaddata(fixture_labels)
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/management/commands/loaddata.py", line 114, in loaddata
self.load_label(fixture_label)
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/management/commands/loaddata.py", line 172, in load_label
for obj in objects:
File "/home/user/Desktop/projects/mytestwebapp/venv/lib/python3.8/site-packages/django/core/serializers/json.py", line 73, in Deserializer
raise DeserializationError() from exc
django.core.serializers.base.DeserializationError: Problem installing fixture '/home/user/Desktop/projects/mytestwebapp/dump1.json':
I have tried also to exclude some of the things i dont need while dumping, using the following我还尝试使用以下方法排除一些我在倾倒时不需要的东西
dumpdata --natural-foreign --indent 2 -e contenttypes -e auth.permission -e wagtailcore.groupcollectionpermission -e wagtailcore.grouppagepermission -e wagtailimages.rendition -e sessions > dump1.json
But it didnt make any difference.但它没有任何区别。
The application is a simple blog following the demo shown here .该应用程序是一个简单的博客,遵循 此处显示的演示。
use --output
instead of >
to avoid sending console(stdout) debugging info to your dumped data, also exclude the irrelevant models使用--output
代替>
以避免将控制台(stdout)调试信息发送到您的转储数据,同时排除不相关的模型
python manage.py dumpdata --natural-foreign --indent 2 -e contenttypes -e auth.permission -e wagtailcore.groupcollectionpermission -e wagtailcore.grouppagepermission -e wagtailimages.rendition -e sessions -e wagtailimages.uploadedimage --output dumps.json
Based on your output, the dumped data is empty thus it throws the following error.根据您的 output,转储的数据为空,因此会引发以下错误。
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Ways to dump your data:转储数据的方法:
python manage.py makemigrations
python manage.py migrate
python manage.py dumpdata -output my_dumps.json
再次运行转储数据python manage.py dumpdata -output my_dumps.json
Then, check the my_dumps.json file, if there are some data inside, then you can try load your data using python manage.py loaddata my_dumps.json
然后,检查 my_dumps.json 文件,如果里面有一些数据,那么你可以尝试使用python manage.py loaddata my_dumps.json
加载数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.