【发布时间】:2018-06-16 22:34:40
【问题描述】:
问题
我有一个空的(已迁移的)postgres 数据库,我想将我的 sqlite 数据库中的数据移动到该数据库中。
我的尝试
-
我用导出
./manage.py dumpdata --exclude auth.permission --exclude contenttypes --natural-foreign然后使用
./manage.py loaddata将数据加载到 postgres 数据库中。这里的问题是 wagtail 需要内容类型,我得到一个运行时错误
FooPage matching query does not exist.在
/wagtail/wagtailcore/models.py:639 return content_type.get_object_for_this_type(id=self.id) 不要将
contenttypes与dumpdata排除在外。现在loaddata命令失败并显示IntegrityError:Key ... already exists。-
我已经尝试在加载数据之前删除所有
ContentType模型对象,这样它就不会抱怨重复键。虽然这在使用 sqlite db 时有效,但它在 postgres db 上失败,IntegrityErrorKey (id)=(1) is still referenced from table "wagtailcore_page".
使用过的版本
- django 1.11.9
- 鹡鸰 1.12.3
- python 3.5
相关
【问题讨论】:
-
尝试将
--natural-foreign用于dumpdata,参见documentation。 -
@rafalmp 我也试过了,我已经相应地更新了问题
-
在 Django 的 dumpdata 和 loaddata 上浪费了太多时间。它很繁琐,几乎没有用。
标签: python django postgresql sqlite wagtail