Erro dblink PostgreSQL

PostgreSQL

11/01/2019

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.
Fabiano Rios

Fabiano Rios

Curtidas 0

Melhor post

Thalles Oliveira

Thalles Oliveira

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.
GOSTEI 1

Mais Respostas

Fabiano Rios

Fabiano Rios

11/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.
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;
GOSTEI 0
Thalles Oliveira

Thalles Oliveira

11/01/2019

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;
GOSTEI 1
POSTAR