Wagtail将sqlite移动到Postgres数据库

Jor*_*ren 6 python sqlite django postgresql wagtail

问题

我有一个空的(迁移的)postgres数据库,我要将sqlite数据库中的数据移到其中。

我尝试过的

  • 我出口

    ./manage.py dumpdata --exclude auth.permission --exclude contenttypes --natural-foreign
    
    Run Code Online (Sandbox Code Playgroud)

    然后使用将数据加载到postgres db中./manage.py loaddata

    这里的问题是w需要内容类型,并且出现运行时错误

    FooPage matching query does not exist. 
    
    Run Code Online (Sandbox Code Playgroud)

    /wagtail/wagtailcore/models.py:639 
    return content_type.get_object_for_this_type(id=self.id)
    
    Run Code Online (Sandbox Code Playgroud)
  • 不排除contenttypesdumpdata。现在该loaddata命令失败,并显示IntegrityErrorKey ... already exists

  • 我试图ContentType在加载数据之前删除所有模型对象,以免出现重复键的问题。虽然在使用sqlite db时可以正常工作,但在postgres db上却失败,并带有IntegrityError

    Key (id)=(1) is still referenced from table "wagtailcore_page".
    
    Run Code Online (Sandbox Code Playgroud)

二手版本

  • Django 1.11.9
  • 1.12.3
  • python 3.5

有关

在Django中加载灯具时内容类型出现问题

小智 0

当我将 Wagtail 站点从 sqlite 移动到 Postgres 时,我做了一些事情,所以只是添加以供参考。

我使用这个网站作为基础,但由于外键问题而无法立即删除ContentType对象时遇到了错误,如下所示:

django.db.utils.IntegrityError:在表“wagtailcore_page”上插入或更新违反了外键约束“wagtailcore_page_content_type_id_c28424df_fk_django_co”

详细信息:表“django_content_type”中不存在键 (content_type_id)=(1)。

似乎是由于 Wagtail 页面对象所致,因此首先在 Django shell 中执行以下两行。然后能够按照该页面上的其余说明执行 ContentType 删除和导入。

from wagtail.core.models import Page
Page.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)