Postgres flyway同时创建索引错误

Postgres flyway create concurrently index error

我想做类似的事情:

CREATE OR REPLACE FUNCTION __column_exists(TEXT, TEXT, TEXT) RETURNS bool as $$
SELECT exists(SELECT 1 FROM information_schema.columns WHERE (table_schema, table_name, column_name) = (, , ));
$$ language sql STRICT;

DO $$ BEGIN IF __column_exists('public', 'table_name', 'column_name') THEN
CREATE INDEX CONCURRENTLY IF NOT EXISTS column_idx ON table_name USING btree (column_name);
END IF; END; $$;

但是有

ERROR: CREATE INDEX CONCURRENTLY cannot run inside a transaction block

如果我只写就可以正常工作

CREATE INDEX CONCURRENTLY IF NOT EXISTS column_idx ON table_name USING btree (column_name);

如何保留列存在的条件?

飞路 4.2.0;

你为什么用这么老的flyway? 您应该先升级您的flyway版本,然后:

像V01_001__my_script.sql.conf一样为你的脚本创建一个配置文件 其中 V01_001__my_script.sql 是您的 sql 文件的名称。

并将这一行放在里面:

executeInTransaction=false

这将禁止在交易中执行此脚本。