2015-05-29 39 views

回答

1

在Django中不支持PostgreSQL concurent索引创建。

这是门票请求此功能 - https://code.djangoproject.com/ticket/21039

但是相反,你可以手动迁移指定任何自定义RunSQL操作 - https://docs.djangoproject.com/en/1.8/ref/migration-operations/#runsql

+0

啊,那是有助于了解。谢谢! – yekta

+3

你不能在一个事务中运行'CREATE INDEX CONCURRENTLY',AFAIK Django总是在一个事务中运行迁移(至少在Postgres上)。 – Pankrat

+2

@Pankrat 1.10将支持[非事务性迁移](https://code.djangoproject.com/ticket/25833),所以现在应该可以。 – rcoup

4

使用Django 1.10迁移您可以通过使用创建并行索引RunSQL,并通过将迁移中的atomic = False设置为数据属性使迁移非原子化来禁用打包事务:

class Migration(migrations.Migration): 
    atomic = False # disable transaction 

    dependencies = [] 

    operations = [ 
     migrations.RunSQL('CREATE INDEX CONCURRENTLY ...') 
    ]