4

I have a function, and after added some changes, I started to get ERROR: duplicate connection name Function dropped and created new one

Here My function

create extension dblink;
create or replace function Log_Save (Moderator integer, Subject varchar(32), ID_Subject integer, LogAction varchar(64), LogText varchar(4000)) 
returns void as $$
begin
    perform dblink_connect('pragma','dbname=myDbName');
    perform dblink_exec('pragma','insert into "Log" ("Moderator", "Subject", "ID_Subject", "Text", "Action", "LogDate") values (' || 
                        Moderator || 
                        ', ''' || Subject || ''',' || 
                        ID_Subject || 
                        ',''' || LogText || ''', ''' || 
                        LogAction || ''', ''' || now() || ''');');
    perform dblink_exec('pragma','commit;');
    perform dblink_disconnect('pragma');
end; $$ 
language plpgsql;

I catch error when run

select Log_Save(1, 'User', 1, 'Update', 'Name: Name1 > Name2')

How to solve it?

UPDATE I changed name from pragma to another name and it continue to work. But why it's happen I don't know. I don't need another db_link I want to use old one. List of db_link_connections I got via SELECT dblink_get_connections();

Igor Cova
  • 3,126
  • 4
  • 31
  • 57

1 Answers1

5

This was probably because the function encountered an error et not run the disconnection.

Then as 'pragma' was already used, when you run again the function you had this error.

Try :

SELECT dblink_disconnect('pragma');

Then run again your function.

akelwood
  • 61
  • 1
  • 3