Erro dblink PostgreSQL
11/01/2019
0
Boa noite. Alguém conseguiria me ajudar, por gentileza? Estou utilizando dblink no PostGres e, para a inserção de uma tabela, especificamente, ocorre o erro "org.postgresql.util.PSQLException: ERROR: duplicate connection name".
Já tentei achar a solução de todas as formas que imaginei possíveis e não consegui.
O mais engraçado, neste caso, é que tenho 10 tabelas que fazem a integração, porém, somente 1 apresenta o erro que citei.
Agradeço pela ajuda.
Já tentei achar a solução de todas as formas que imaginei possíveis e não consegui.
O mais engraçado, neste caso, é que tenho 10 tabelas que fazem a integração, porém, somente 1 apresenta o erro que citei.
Agradeço pela ajuda.
Fabiano Rios
Curtir tópico
+ 0
Responder
Post mais votado
13/01/2019
Conseguiu resolver? Caso ainda não, poste o conteúdo da unit p/ melhor entendimento, visto que, você possui outras 10 tables funcionando.
Thalles Oliveira
Responder
Mais Posts
14/01/2019
Fabiano Rios
Conseguiu resolver? Caso ainda não, poste o conteúdo da unit p/ melhor entendimento, visto que, você possui outras 10 tables funcionando.
Thales, bom dia. Ainda não consegui a solução. Postarei aqui as duas functions que estou utilizando: a que apresenta o erro e uma que está funcionando:Function com erro:
-- Function: insere_pedido_replication() -- DROP FUNCTION insere_pedido_replication(); CREATE OR REPLACE FUNCTION insere_pedido_replication() RETURNS trigger AS $BODY$ BEGIN IF TG_OP = 'UPDATE' then IF (select pedidofaturadosimnao from pedido where serieid = 8 and pedidoid = new.pedidoid) = 'S' then -- perform dblink_disconnect('fiscal'); perform(dblink_connect('fiscal','host=xmprd port=5432 user=abcglass password=abcglass@ dbname=AbcGlass')); perform(dblink_exec('fiscal', 'INSERT INTO pedido (pedidoid, pedidonumero, pedidoorigem, pedidoempresaid, serieid, pedidoisnfe, naturezaid, pedidosaidaentradadata, pedidocriacaodata, pedclipessoaid, pedclienderecoid, pedclientregaendid, pedtranspessoaid, pedtranspessoaendid, pedtransveiculoplaca, pedvendpessoaid, formapgtoid, condicaopgtoid, pedidotipo, pedidofretevalor, pedidoimpresso, pedidoobs, pedidoentreguesimnao, pedidofaturadosimnao, pedidocancelado, pedidoatendoriginal, pedidooutrasdesp, canalvendaid) values ( '||vpedido_pedidoid||', '''||vpedido_pedidonumero||''', '''||vpedido_pedidoorigem||''', '''||vpedido_pedidoempresaid||''', '''||vpedido_serieid||''', '''||vpedido_pedidoisnfe||''', '''||vpedido_naturezaid||''', '''||vpedido_pedidosaidaentradadata||''', '''||vpedido_pedidocriacaodata||''', '''||vpedido_pedclipessoaid||''', '''||vpedido_pedclienderecoid||''', '''||vpedido_pedclientregaendid||''', '''||vpedido_pedtranspessoaid||''', '''||vpedido_pedtranspessoaendid||''', '''||vpedido_pedtransveiculoplaca||''', '''||vpedido_pedvendpessoaid||''', '''||vpedido_formapgtoid||''', '''||vpedido_condicaopgtoid||''', '''||vpedido_pedidotipo||''', '''||vpedido_pedidofretevalor||''', '''||vpedido_pedidoimpresso||''', '''||vpedido_pedidoobs||''', '''||vpedido_pedidoentreguesimnao||''', '''||vpedido_pedidofaturadosimnao||''', '''||vpedido_pedidocancelado||''', '''||vpedido_pedidoatendoriginal||''', '''||vpedido_pedidooutrasdesp||''', '''||vpedido_canalvendaid||''')')); perform dblink_disconnect('fiscal'); END IF; END IF; RETURN NULL; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION insere_pedido_replication() OWNER TO postgres;
======== Function funcionando
-- Function: insere_pessoacat_replication() -- DROP FUNCTION insere_pessoacat_replication(); CREATE OR REPLACE FUNCTION insere_pessoacat_replication() RETURNS trigger AS $BODY$ DECLARE vpessoa_pessoacatid bigint; vpessoa_pessoacatdescricao varchar(60); BEGIN select pessoacatid into vpessoa_pessoacatid from pessoacategoria where pessoacatid = new.pessoacatid; select pessoacatdescricao into vpessoa_pessoacatdescricao from pessoacategoria where pessoacatid = new.pessoacatid; perform dblink_disconnect('fiscal'); perform(dblink_connect('fiscal','host=xmprd port=5432 user=abcglass password=abcglass@ dbname=AbcGlass')); perform(dblink_exec('fiscal', 'insert into pessoacategoria (pessoacatid, pessoacatdescricao) values ('||vpessoa_pessoacatid||','''||vpessoa_pessoacatdescricao||''')')); perform dblink_disconnect('fiscal'); RETURN null; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION insere_pessoacat_replication() OWNER TO postgres;
Responder
17/01/2019
Thalles Oliveira
Desculpe a demora, se ainda estiver precisando tente utilizar um if p/ verificação e à partir dele liberar a conexão ou verificar a mesma.<br />
<br />
If ''fiscal'' exist perform dblink_disconnect(''fiscal'');<br />
else <br />
perform(dblink_connect(''fiscal'',''host=xmprd port=5432 user=abcglass password=abcglass@ dbname=AbcGlass''));<br />
<br />
perdoe se o código estiver confuso, não sou expert em postGre;
<br />
If ''fiscal'' exist perform dblink_disconnect(''fiscal'');<br />
else <br />
perform(dblink_connect(''fiscal'',''host=xmprd port=5432 user=abcglass password=abcglass@ dbname=AbcGlass''));<br />
<br />
perdoe se o código estiver confuso, não sou expert em postGre;
Responder
Clique aqui para fazer login e interagir na Comunidade :)