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

Fabiano Rios

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

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;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar