2015-04-13 15 views
5

Tôi đang cố gắng chạy lệnh CREATE INDEX CONCURRENTLY đối với cơ sở dữ liệu Postgres 9.2. Tôi đã triển khai MigrationResolver như được hiển thị trong số phát hành 655. Khi bước di chuyển này được chạy qua mvn flyway:migrate hoặc tương tự, lệnh sẽ bắt đầu nhưng bị treo trong chế độ chờ.Di chuyển đường bay bị treo cho postgres CREATE INDEX CONCURRENTLY

Tôi xác nhận rằng lệnh được thực hiện thông qua pg_stat_activity bảng:

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) 

Một dự án ví dụ mà tái tạo vấn đề này có thể được tìm thấy trong github của tôi: chrisphelps/flyway-experiment

nghi ngờ của tôi là truy vấn đường bay chống lại schema versionidle in transaction đang ngăn việc postgres tiếp tục tạo chỉ mục.

Làm cách nào để giải quyết xung đột để các bưu cục sẽ tiếp tục di chuyển? Có ai có thể áp dụng loại di cư này cho bưu cục qua đường bay không?

+0

Tôi không hiểu tại sao nó sẽ bế tắc, kể từ khi chỉ số này trên một bảng khác nhau từ cái được sử dụng bởi đường bay (lược đồ _phiên bản). Hmmm ... –

+0

Bạn có thể xác nhận hành vi trong repo không? – CPhelps

Trả lời

6

Trong meantime, có Trình phân giải được bao gồm trong đường bay tìm kiếm một số ma thuật trong tên tệp.

Chỉ cần thêm tiền tố 'NT' (ví N o- T ransaction) vào tập tin chuyển đổi của bạn, i. e.

V01__usual_migration_1.sql

V02__another_migration.sql

NTV03__migration_that_does_not_run_in_transaction.sql

V04__classical_migration_4.sql

, vv

Các vấn đề liên quan