2015-04-13 26 views
5

Bir CREATE INDEX CONCURRENTLY komutunu Postgres 9.2 veritabanına karşı çalıştırmaya çalışıyorum. 655 numaralı belgede gösterildiği gibi bir MigrationResolver uyguladım. Bu geçiş adımı, mvn flyway:migrate veya benzeri yoluyla çalıştırıldığında, komut başlar, ancak bekleme modunda askıda kalıyor. Bu sorunu çoğaltır bir örnek proje benim github bulunabilirUçan geçişi postgres için askıda kalıyor CREATE INDEX CONCURRENTLY

test_2015_04_13_110536=# select * from pg_stat_activity; 
datid |  datname   | pid | usesysid | usename | application_name | client_addr | client_hostname | client_port |   backend_start   |   xact_start   |   query_start   |   state_change   | waiting |  state  |                         query 
-------+------------------------+-------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+---------+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
21095 | test_2015_04_13_110536 | 56695 | 16385 | postgres | psql    |    |     |   -1 | 2015-04-13 11:10:01.127768-06 | 2015-04-13 11:13:08.936651-06 | 2015-04-13 11:13:08.936651-06 | 2015-04-13 11:13:08.936655-06 | f  | active    | select * from pg_stat_activity; 
21095 | test_2015_04_13_110536 | 56824 | 16385 | postgres |     | 127.0.0.1 |     |  52437 | 2015-04-13 11:12:55.438927-06 | 2015-04-13 11:12:55.476442-06 | 2015-04-13 11:12:55.487139-06 | 2015-04-13 11:12:55.487175-06 | f  | idle in transaction | SELECT "version_rank","installed_rank","version","description","type","script","checksum","installed_on","installed_by","execution_time","success" FROM "public"."schema_version" ORDER BY "version_rank" 
21095 | test_2015_04_13_110536 | 56825 | 16385 | postgres |     | 127.0.0.1 |     |  52438 | 2015-04-13 11:12:55.443687-06 | 2015-04-13 11:12:55.49024-06 | 2015-04-13 11:12:55.49024-06 | 2015-04-13 11:12:55.490241-06 | t  | active    | CREATE UNIQUE INDEX CONCURRENTLY person_restrict_duplicates_2_idx ON person(name, person_month, person_year) 
(3 rows) 

:

komut pg_stat_activity masanın üzerinden yürütülmesi teyit ettik chrisphelps/flyway-experiment

Benim şüphe olduğunu göç yolu sorgusu karşı idle in transaction olan schema version, postgre'lerin dizin oluşturmaya devam etmesini engelliyor.

Çatışmaları göçle devam edecek şekilde çakışmayı nasıl çözebilirim? Bu tür bir göçü sefere gelerek postgres'e uygulayabilmiş mi?

+0

Ben anlamıyorum uçağın kullandığı (şema _version). Hmmm ... –

+0

Repodaki davranışları doğrulayabilir miydiniz? – CPhelps

cevap

6

meantime'da, dosya yolunda bazı sihirleri arayan bir yol da dahil olmak üzere bir Çözümleyici vardır.

Sadece, taşıma dosyasına (N o- T ransaction için) i önek 'NT' ekleyin. e. o kilitlenmeye neden endeksi farklı bir masada olduğu

V01__usual_migration_1.sql

V02__another_migration.sql

NTV03__migration_that_does_not_run_in_transaction.sql

V04__classical_migration_4.sql

vb

İlgili konular