2015-05-29 70 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 ...') 
    ]