转储,然后为WagTail加载sqlite3 DB

时间:2018-08-24 17:12:19

标签: wagtail

我正在尝试复制生产数据库的内容,然后用于本地开发。我尝试使用sqlite的转储,然后执行cat dump.sql | sqlite3 db.sqlite3,但这只会打印出诸如以下的错误:

Error: near line 3: table "django_migrations" already exists
Error: near line 4: UNIQUE constraint failed: django_migrations.id
Error: near line 5: UNIQUE constraint failed: django_migrations.id
Error: near line 6: UNIQUE constraint failed: django_migrations.id
Error: near line 7: UNIQUE constraint failed: django_migrations.id
Error: near line 8: UNIQUE constraint failed: django_migrations.id
Error: near line 9: UNIQUE constraint failed: django_migrations.id

我也尝试过使用Django自己的转储/加载命令,但是当我这样做./manage.py loaddata db.json时,会遇到很多错误:

Traceback (most recent call last):
  File "/Users/jack/dev/web_design/kaoru_wada/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Users/jack/dev/web_design/kaoru_wada/venv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 337, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: UNIQUE constraint failed: django_content_type.app_label, django_content_type.model

即使删除现有的本地数据库,运行迁移,然后尝试将dbdumps导入到新的本地数据库中,我也会遇到这些错误。

关于如何复制数据库内容并成功导入数据库的任何想法?

1 个答案:

答案 0 :(得分:0)

您的.sql转储文件包含用于构造数据库表的信息以及用于填充数据库表的数据,因此无需将迁移作为单独的步骤运行-只需复制过程的一部分(并在过程中抛出错误)尝试创建已经存在的表。

仅运行cat dump.sql | sqlite3 db.sqlite3步骤而不预先创建db.sqlite3文件,将为您提供一个完全填充的数据库,其状态与运行迁移的状态相同。