为什么django dumpdata不包含django_migrations表?

时间:2015-06-04 02:59:06

标签: django django-migrations

Django dumpdata(未指定应用程序)将所有已安装应用程序的所有表转储到输出文件。我刚刚意识到这不包括django_migrations表。我检查了其他django表,它们被包含在INSTALLED_APPS设置中,如下所示:

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

现在,我很好奇,为什么django_migrations表没有被丢弃。基本原理似乎是当您创建新数据库并进行迁移时,它将自动生成并填充数据。它是否正确?如果是这样,我的第二个问题是有没有办法将其转储(作为备份)?我是django的新手并尝试新的东西,我可能打破那张桌子。备份是很方便的。

2 个答案:

答案 0 :(得分:0)

django_migrations表存在于传统的Django机器之外,这可能就是为什么它不包含在内(根据@knbk)。

只要您备份应用程序,就无需备份迁移表。您可以删除所有应用程序表并重新迁移所有内容。当您处于此状态时,您可能还希望通过使用squash命令或删除所有迁移并从头开始创建来压缩迁移。

答案 1 :(得分:0)

请注意,django_migrations 不是唯一被排除的表,django_site 也被排除在外(仅适用于使用 Django 站点功能的情况)。

这意味着当您恢复数据库时,在迁移之后,不要删除由迁移为这两个表创建的数据。如果适用,您可能需要为 django_site 创建手动条目。

奇怪的是这些表:

    'auth_group_permissions',
    'auth_permission',
    'auth_user',
    'django_content_type',

由转储数据和migrate创建。这意味着如果您转储数据,请准备好先截断上述表格,然后才能成功加载数据(或将它们从您的转储数据命令中排除)。